{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 298,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from pandas import ExcelWriter\n",
    "import numpy as np\n",
    "import scipy as sp\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from scipy.stats import norm\n",
    "import json as json\n",
    "from sklearn.linear_model import LogisticRegression, RidgeCV, LassoCV\n",
    "from scipy.stats import ks_2samp\n",
    "from scipy.stats import chi2_contingency\n",
    "from sklearn.feature_selection import chi2\n",
    "\n",
    "\n",
    "plt.figure(figsize=(10,8))\n",
    "\n",
    "#单变量分析\n",
    "def plot_N_var(df, var, missing_impute=None, qs=None):\n",
    "    y = df['RESPONSE'].values\n",
    "    y_T, n_T = float(np.sum(y)), float(len(y))\n",
    "    \n",
    "    if var not in df.columns:\n",
    "        raise Exception(\"The variable is not found in the data.\")\n",
    "    \n",
    "    fig, ax = plt.subplots(1,3)\n",
    "\n",
    "    if missing_impute is None:\n",
    "        x = pd.to_numeric(df[var], errors='coerce').values\n",
    "    else:\n",
    "        x = pd.to_numeric(df[var], errors='coerce').fillna(missing_impute).values\n",
    "\n",
    "    #Plot 1: distribution\n",
    "    sns.distplot(x[pd.notnull(x)], kde=False, ax=ax[0])\n",
    "    \n",
    "    #Plot 2: Factor plot\n",
    "    if qs is None:\n",
    "        quantiles = list(set([-np.inf] + \\\n",
    "                             list(np.percentile(x[pd.notnull(x)], [float(i) * 10.0 for i in range(10)])) + \\\n",
    "                             [np.inf]))\n",
    "        \n",
    "        #print(list(np.percentile(x[pd.notnull(x)], [float(i) * 10.0 for i in range(10)])))\n",
    "        quantiles.sort()\n",
    "        #print(quantiles)\n",
    "    else:\n",
    "        quantiles = qs\n",
    "\n",
    "    #print quantiles\n",
    "    bins = pd.cut(x, quantiles, include_lowest=False)\n",
    "    \n",
    "    if missing_impute is None:\n",
    "        bins = bins.set_categories([\"missing\"] + list(bins.categories)).fillna('missing')\n",
    "\n",
    "    print(bins.categories)\n",
    "\n",
    "    tmp_df = pd.DataFrame({'bins': bins, 'flag': y})\n",
    "    sns.factorplot(x=\"bins\", y=\"flag\", data=tmp_df,\n",
    "                   kind=\"bar\", palette=\"muted\", ax=ax[1])\n",
    "    \n",
    "    #Plot 3: WOE\n",
    "    vi_table = pd.concat((tmp_df.groupby('bins').sum(),\n",
    "                      tmp_df.groupby('bins').count()),\n",
    "                     axis=1\n",
    "                    )\n",
    "    vi_table.columns=['response', 'total']\n",
    "    vi_table['woe'] = np.log(vi_table.response/vi_table.total/(y_T/n_T))\n",
    "    vi_table['vi'] = (vi_table.response / y_T - vi_table.total / n_T) * vi_table['woe']\n",
    "    vi_table['vi'][vi_table['vi']==np.inf] = 0\n",
    "    print(vi_table)\n",
    "    iv = vi_table.vi.sum()\n",
    "    print(\"IV of\", var, \":\", iv )\n",
    "    vi_table['bins'] = vi_table.index\n",
    "    sns.factorplot(x='bins', y='woe', data=vi_table,\n",
    "                   kind=\"bar\", palette=\"muted\", ax=ax[2])\n",
    "    \n",
    "    woe_mapper = {}\n",
    "    for val, w in zip(vi_table.bins.values, vi_table.woe.values):\n",
    "        woe_mapper[val] = w\n",
    "    \n",
    "    #plt.show()\n",
    "    return quantiles, iv, woe_mapper, fig\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      CHK_ACCT  DURATION  HISTORY  NEW_CAR  USED_CAR  FURNITURE  RADIO/TV  \\\n",
      "OBS#                                                                        \n",
      "206          0        30        4        0         1          0         0   \n",
      "642          1        15        2        0         0          0         0   \n",
      "468          3        48        3        0         0          0         1   \n",
      "962          1        21        3        1         0          0         0   \n",
      "837          3        12        2        0         0          0         1   \n",
      "425          1        12        2        0         0          1         0   \n",
      "236          0        24        2        0         0          0         1   \n",
      "286          0        47        2        1         0          0         0   \n",
      "452          3         6        2        0         0          0         1   \n",
      "87           1        18        4        0         0          1         0   \n",
      "601          1         7        2        0         0          0         1   \n",
      "533          3        12        3        0         1          0         0   \n",
      "745          0        39        4        0         0          1         0   \n",
      "408          0        15        2        0         0          0         1   \n",
      "69           3        36        2        0         0          0         0   \n",
      "842          3        21        3        0         1          0         0   \n",
      "231          2        36        2        0         0          0         1   \n",
      "815          0        48        2        1         0          0         0   \n",
      "749          3        21        2        0         1          0         0   \n",
      "786          1        18        2        0         0          0         0   \n",
      "282          3        12        2        0         0          1         0   \n",
      "924          1        12        2        1         0          0         0   \n",
      "368          0        18        2        0         0          1         0   \n",
      "937          2         9        2        0         0          0         1   \n",
      "6            3        36        2        0         0          0         0   \n",
      "572          3        30        4        0         0          0         1   \n",
      "222          0        12        2        0         0          0         0   \n",
      "371          3        36        2        1         0          0         0   \n",
      "387          3        18        2        0         0          0         1   \n",
      "723          0        12        2        1         0          0         0   \n",
      "...        ...       ...      ...      ...       ...        ...       ...   \n",
      "241          0        24        2        1         0          0         0   \n",
      "959          0        28        2        1         0          0         0   \n",
      "648          3        12        2        1         0          0         0   \n",
      "71           3        36        2        0         1          0         0   \n",
      "165          3        36        2        1         0          0         0   \n",
      "643          3        15        2        0         0          0         0   \n",
      "564          1        36        2        1         0          0         0   \n",
      "917          3        10        2        0         1          0         0   \n",
      "239          3        12        4        0         0          0         1   \n",
      "98           1        18        2        0         0          0         0   \n",
      "349          3         6        3        0         0          0         0   \n",
      "984          0        36        2        0         1          0         0   \n",
      "781          1        39        4        0         0          0         1   \n",
      "43           1        18        3        0         0          0         0   \n",
      "988          3        13        2        0         0          0         1   \n",
      "263          0        18        4        1         0          0         0   \n",
      "519          0         6        2        1         0          0         0   \n",
      "928          0        48        2        0         1          0         0   \n",
      "730          2        24        4        0         0          0         0   \n",
      "188          1        16        4        1         0          0         0   \n",
      "480          0        15        4        0         0          1         0   \n",
      "296          1        48        2        0         0          1         0   \n",
      "224          3        24        3        0         0          0         0   \n",
      "649          2        24        2        1         0          0         0   \n",
      "944          3         4        4        1         0          0         0   \n",
      "545          3        12        4        1         0          0         0   \n",
      "718          3        18        2        0         0          0         1   \n",
      "50           3        12        2        0         0          0         1   \n",
      "363          2        12        3        1         0          0         0   \n",
      "931          0        24        2        0         0          1         0   \n",
      "\n",
      "      EDUCATION  RETRAINING  AMOUNT   ...     PROP_UNKN_NONE  AGE  \\\n",
      "OBS#                                  ...                           \n",
      "206           0           0   10623   ...                  1   38   \n",
      "642           0           0    1308   ...                  0   38   \n",
      "468           0           0    7238   ...                  0   32   \n",
      "962           0           0    2353   ...                  0   47   \n",
      "837           0           0     886   ...                  0   21   \n",
      "425           0           0    2762   ...                  0   25   \n",
      "236           0           0    1823   ...                  0   30   \n",
      "286           0           0   10722   ...                  0   35   \n",
      "452           0           0     518   ...                  0   29   \n",
      "87            0           0    1295   ...                  0   27   \n",
      "601           0           0    2329   ...                  0   45   \n",
      "533           0           0    1503   ...                  0   41   \n",
      "745           0           0   14179   ...                  0   30   \n",
      "408           0           0    1053   ...                  0   27   \n",
      "69            1           0    1819   ...                  1   37   \n",
      "842           0           0    2993   ...                  0   28   \n",
      "231           0           0    4210   ...                  0   26   \n",
      "815           0           0    3931   ...                  1   46   \n",
      "749           0           0    5248   ...                  0   26   \n",
      "786           0           1    1941   ...                  0   35   \n",
      "282           0           0    1574   ...                  0   50   \n",
      "924           0           0    2002   ...                  0   30   \n",
      "368           0           0    3650   ...                  0   22   \n",
      "937           0           0     745   ...                  0   28   \n",
      "6             1           0    9055   ...                  1   35   \n",
      "572           0           0    5954   ...                  0   38   \n",
      "222           1           0    1200   ...                  0   23   \n",
      "371           0           0    3079   ...                  0   36   \n",
      "387           0           0    1126   ...                  0   21   \n",
      "723           0           0    1228   ...                  0   24   \n",
      "...         ...         ...     ...   ...                ...  ...   \n",
      "241           0           0     915   ...                  0   29   \n",
      "959           0           0    4006   ...                  0   45   \n",
      "648           0           0    1386   ...                  0   26   \n",
      "71            0           0    8133   ...                  0   30   \n",
      "165           0           0     909   ...                  0   36   \n",
      "643           1           0    4623   ...                  0   40   \n",
      "564           0           0   12389   ...                  1   37   \n",
      "917           0           0    2848   ...                  0   32   \n",
      "239           0           0    1291   ...                  0   35   \n",
      "98            0           1    2622   ...                  0   34   \n",
      "349           0           1    1743   ...                  0   34   \n",
      "984           0           0    8229   ...                  0   26   \n",
      "781           0           0    4933   ...                  0   25   \n",
      "43            0           0    6204   ...                  0   44   \n",
      "988           0           0    1409   ...                  0   64   \n",
      "263           0           0    5302   ...                  1   36   \n",
      "519           0           0    1203   ...                  0   43   \n",
      "928           0           0   10297   ...                  1   39   \n",
      "730           0           1    1275   ...                  0   36   \n",
      "188           0           0    1175   ...                  0   68   \n",
      "480           0           0    1478   ...                  0   44   \n",
      "296           0           0    9960   ...                  0   26   \n",
      "224           0           1    2978   ...                  0   32   \n",
      "649           0           0     947   ...                  1   38   \n",
      "944           0           0    1455   ...                  0   42   \n",
      "545           0           0    1255   ...                  0   61   \n",
      "718           0           0    1505   ...                  1   32   \n",
      "50            0           0    2073   ...                  0   28   \n",
      "363           0           0    2247   ...                  0   36   \n",
      "931           0           0    1747   ...                  0   24   \n",
      "\n",
      "      OTHER_INSTALL  RENT  OWN_RES  NUM_CREDITS  JOB  NUM_DEPENDENTS  \\\n",
      "OBS#                                                                   \n",
      "206               0     0        0            3    3               2   \n",
      "642               0     0        1            2    1               1   \n",
      "468               1     0        1            2    2               2   \n",
      "962               0     0        1            2    2               1   \n",
      "837               0     0        1            1    2               1   \n",
      "425               1     0        1            1    2               1   \n",
      "236               1     0        1            1    3               2   \n",
      "286               0     0        1            1    1               1   \n",
      "452               0     0        1            1    2               1   \n",
      "87                0     0        1            2    2               1   \n",
      "601               0     0        1            1    2               1   \n",
      "533               0     1        0            1    2               1   \n",
      "745               0     0        1            2    3               1   \n",
      "408               0     0        1            1    2               1   \n",
      "69                1     0        0            1    2               1   \n",
      "842               1     0        1            2    1               1   \n",
      "231               0     0        1            1    2               1   \n",
      "815               0     0        0            1    2               2   \n",
      "749               0     0        1            1    2               1   \n",
      "786               0     0        1            1    1               1   \n",
      "282               0     0        1            1    2               1   \n",
      "924               0     1        0            1    2               2   \n",
      "368               0     1        0            1    2               1   \n",
      "937               0     0        1            1    1               1   \n",
      "6                 0     0        0            1    1               2   \n",
      "572               0     0        1            1    2               1   \n",
      "222               1     1        0            1    2               1   \n",
      "371               0     0        1            1    2               1   \n",
      "387               0     1        0            1    2               1   \n",
      "723               0     0        1            1    1               1   \n",
      "...             ...   ...      ...          ...  ...             ...   \n",
      "241               1     0        1            1    2               1   \n",
      "959               0     0        1            1    1               1   \n",
      "648               0     0        1            1    2               1   \n",
      "71                1     0        1            1    2               1   \n",
      "165               0     0        1            1    2               1   \n",
      "643               0     0        1            1    3               1   \n",
      "564               0     0        0            1    2               1   \n",
      "917               0     0        1            1    2               2   \n",
      "239               0     0        1            2    2               1   \n",
      "98                0     0        1            1    2               1   \n",
      "349               0     0        1            2    1               1   \n",
      "984               0     0        1            1    2               2   \n",
      "781               0     0        1            2    2               1   \n",
      "43                0     0        1            1    1               2   \n",
      "988               0     0        1            1    2               1   \n",
      "263               0     0        0            3    3               1   \n",
      "519               0     0        1            1    2               1   \n",
      "928               1     0        0            3    2               2   \n",
      "730               0     0        1            2    2               1   \n",
      "188               0     0        0            3    0               1   \n",
      "480               0     0        1            2    2               2   \n",
      "296               0     0        1            1    2               1   \n",
      "224               0     0        1            2    2               2   \n",
      "649               1     0        0            1    2               2   \n",
      "944               0     0        1            3    1               2   \n",
      "545               0     0        1            2    1               1   \n",
      "718               0     0        0            1    3               1   \n",
      "50                0     0        1            1    2               1   \n",
      "363               1     0        1            2    2               1   \n",
      "931               0     0        1            1    1               1   \n",
      "\n",
      "      TELEPHONE  FOREIGN  \n",
      "OBS#                      \n",
      "206           1        0  \n",
      "642           0        0  \n",
      "468           0        0  \n",
      "962           0        0  \n",
      "837           0        0  \n",
      "425           1        0  \n",
      "236           0        0  \n",
      "286           1        0  \n",
      "452           0        0  \n",
      "87            0        0  \n",
      "601           0        0  \n",
      "533           0        0  \n",
      "745           1        0  \n",
      "408           0        1  \n",
      "69            1        0  \n",
      "842           0        0  \n",
      "231           0        0  \n",
      "815           0        0  \n",
      "749           0        0  \n",
      "786           1        0  \n",
      "282           0        0  \n",
      "924           1        0  \n",
      "368           0        0  \n",
      "937           0        0  \n",
      "6             1        0  \n",
      "572           0        0  \n",
      "222           1        0  \n",
      "371           0        0  \n",
      "387           1        0  \n",
      "723           0        0  \n",
      "...         ...      ...  \n",
      "241           0        0  \n",
      "959           0        0  \n",
      "648           0        0  \n",
      "71            0        0  \n",
      "165           0        0  \n",
      "643           1        0  \n",
      "564           1        0  \n",
      "917           0        0  \n",
      "239           0        0  \n",
      "98            0        0  \n",
      "349           0        0  \n",
      "984           0        0  \n",
      "781           0        0  \n",
      "43            1        0  \n",
      "988           0        0  \n",
      "263           1        0  \n",
      "519           1        0  \n",
      "928           1        0  \n",
      "730           1        0  \n",
      "188           1        0  \n",
      "480           1        0  \n",
      "296           1        0  \n",
      "224           1        0  \n",
      "649           0        0  \n",
      "944           0        0  \n",
      "545           0        0  \n",
      "718           1        0  \n",
      "50            0        0  \n",
      "363           1        0  \n",
      "931           0        1  \n",
      "\n",
      "[667 rows x 30 columns]\n",
      "OBS#\n",
      "206    1\n",
      "642    1\n",
      "468    1\n",
      "962    1\n",
      "837    1\n",
      "425    0\n",
      "236    0\n",
      "286    1\n",
      "452    1\n",
      "87     1\n",
      "601    1\n",
      "533    1\n",
      "745    1\n",
      "408    1\n",
      "69     0\n",
      "842    1\n",
      "231    0\n",
      "815    0\n",
      "749    1\n",
      "786    1\n",
      "282    1\n",
      "924    1\n",
      "368    1\n",
      "937    0\n",
      "6      1\n",
      "572    1\n",
      "222    1\n",
      "371    1\n",
      "387    1\n",
      "723    0\n",
      "      ..\n",
      "241    0\n",
      "959    0\n",
      "648    0\n",
      "71     1\n",
      "165    1\n",
      "643    0\n",
      "564    0\n",
      "917    1\n",
      "239    1\n",
      "98     1\n",
      "349    1\n",
      "984    0\n",
      "781    0\n",
      "43     1\n",
      "988    1\n",
      "263    1\n",
      "519    1\n",
      "928    0\n",
      "730    1\n",
      "188    1\n",
      "480    1\n",
      "296    0\n",
      "224    1\n",
      "649    0\n",
      "944    1\n",
      "545    1\n",
      "718    1\n",
      "50     1\n",
      "363    1\n",
      "931    1\n",
      "Name: RESPONSE, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "sample=pd.read_csv(r\"/Users/caijian271/test_sample.txt\",index_col='OBS#',sep='\\t')\n",
    "\n",
    "#查看整个数据矩阵的形状\n",
    "sample.shape\n",
    "#查看样例数据，选取前几行数据\n",
    "sample.head()\n",
    "#切分训练集与测试集\n",
    "final=sample.sample(frac=1.0)\n",
    "N = final.shape[0]\n",
    "train = final.iloc[:round(N*(2/3)), :]\n",
    "test = final.iloc[round(N*(2/3)):, :]\n",
    "\n",
    "#N\n",
    "#print(final)\n",
    "train_x=train.iloc[:,:30]\n",
    "train_y=train.iloc[:,30]\n",
    "\n",
    "\n",
    "\n",
    "print(train_x)\n",
    "print(train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CHK_ACCT            int64\n",
       "DURATION            int64\n",
       "HISTORY             int64\n",
       "NEW_CAR             int64\n",
       "USED_CAR            int64\n",
       "FURNITURE           int64\n",
       "RADIO/TV            int64\n",
       "EDUCATION           int64\n",
       "RETRAINING          int64\n",
       "AMOUNT              int64\n",
       "SAV_ACCT            int64\n",
       "EMPLOYMENT          int64\n",
       "INSTALL_RATE        int64\n",
       "MALE_DIV            int64\n",
       "MALE_SINGLE         int64\n",
       "MALE_MAR_or_WID     int64\n",
       "CO-APPLICANT        int64\n",
       "GUARANTOR           int64\n",
       "PRESENT_RESIDENT    int64\n",
       "REAL_ESTATE         int64\n",
       "PROP_UNKN_NONE      int64\n",
       "AGE                 int64\n",
       "OTHER_INSTALL       int64\n",
       "RENT                int64\n",
       "OWN_RES             int64\n",
       "NUM_CREDITS         int64\n",
       "JOB                 int64\n",
       "NUM_DEPENDENTS      int64\n",
       "TELEPHONE           int64\n",
       "FOREIGN             int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 300,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(train_x)\n",
    "#查看每个变量的数据类型，这里变量比较少，如果变量比较多的话应该如何处理呢？\n",
    "train_x.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "      <th>missing_pct</th>\n",
       "      <th>nunique</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>CHK_ACCT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>1.563718</td>\n",
       "      <td>1.253249</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DURATION</th>\n",
       "      <td>667.0</td>\n",
       "      <td>21.230885</td>\n",
       "      <td>12.453062</td>\n",
       "      <td>4.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>72.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HISTORY</th>\n",
       "      <td>667.0</td>\n",
       "      <td>2.575712</td>\n",
       "      <td>1.073099</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NEW_CAR</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.233883</td>\n",
       "      <td>0.423616</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>USED_CAR</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.104948</td>\n",
       "      <td>0.306716</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FURNITURE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.179910</td>\n",
       "      <td>0.384401</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RADIO/TV</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.289355</td>\n",
       "      <td>0.453803</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EDUCATION</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.049475</td>\n",
       "      <td>0.217021</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RETRAINING</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.086957</td>\n",
       "      <td>0.281983</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AMOUNT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>3315.875562</td>\n",
       "      <td>2888.683630</td>\n",
       "      <td>250.0</td>\n",
       "      <td>1371.5</td>\n",
       "      <td>2327.0</td>\n",
       "      <td>4013.0</td>\n",
       "      <td>18424.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SAV_ACCT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>1.082459</td>\n",
       "      <td>1.581834</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EMPLOYMENT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>2.365817</td>\n",
       "      <td>1.199813</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>INSTALL_RATE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>2.947526</td>\n",
       "      <td>1.117136</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MALE_DIV</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.049475</td>\n",
       "      <td>0.217021</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MALE_SINGLE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.545727</td>\n",
       "      <td>0.498278</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MALE_MAR_or_WID</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.094453</td>\n",
       "      <td>0.292677</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CO-APPLICANT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.038981</td>\n",
       "      <td>0.193694</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GUARANTOR</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.049475</td>\n",
       "      <td>0.217021</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PRESENT_RESIDENT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>2.835082</td>\n",
       "      <td>1.121627</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REAL_ESTATE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.280360</td>\n",
       "      <td>0.449512</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PROP_UNKN_NONE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.155922</td>\n",
       "      <td>0.363054</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>35.421289</td>\n",
       "      <td>11.286776</td>\n",
       "      <td>19.0</td>\n",
       "      <td>26.5</td>\n",
       "      <td>33.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>75.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OTHER_INSTALL</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.187406</td>\n",
       "      <td>0.390530</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RENT</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.163418</td>\n",
       "      <td>0.370024</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OWN_RES</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.722639</td>\n",
       "      <td>0.448032</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NUM_CREDITS</th>\n",
       "      <td>667.0</td>\n",
       "      <td>1.403298</td>\n",
       "      <td>0.572798</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>JOB</th>\n",
       "      <td>667.0</td>\n",
       "      <td>1.890555</td>\n",
       "      <td>0.637905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NUM_DEPENDENTS</th>\n",
       "      <td>667.0</td>\n",
       "      <td>1.148426</td>\n",
       "      <td>0.355788</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TELEPHONE</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.400300</td>\n",
       "      <td>0.490327</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FOREIGN</th>\n",
       "      <td>667.0</td>\n",
       "      <td>0.034483</td>\n",
       "      <td>0.182603</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  count         mean          std    min     25%     50%  \\\n",
       "CHK_ACCT          667.0     1.563718     1.253249    0.0     0.0     1.0   \n",
       "DURATION          667.0    21.230885    12.453062    4.0    12.0    18.0   \n",
       "HISTORY           667.0     2.575712     1.073099    0.0     2.0     2.0   \n",
       "NEW_CAR           667.0     0.233883     0.423616    0.0     0.0     0.0   \n",
       "USED_CAR          667.0     0.104948     0.306716    0.0     0.0     0.0   \n",
       "FURNITURE         667.0     0.179910     0.384401    0.0     0.0     0.0   \n",
       "RADIO/TV          667.0     0.289355     0.453803    0.0     0.0     0.0   \n",
       "EDUCATION         667.0     0.049475     0.217021    0.0     0.0     0.0   \n",
       "RETRAINING        667.0     0.086957     0.281983    0.0     0.0     0.0   \n",
       "AMOUNT            667.0  3315.875562  2888.683630  250.0  1371.5  2327.0   \n",
       "SAV_ACCT          667.0     1.082459     1.581834    0.0     0.0     0.0   \n",
       "EMPLOYMENT        667.0     2.365817     1.199813    0.0     2.0     2.0   \n",
       "INSTALL_RATE      667.0     2.947526     1.117136    1.0     2.0     3.0   \n",
       "MALE_DIV          667.0     0.049475     0.217021    0.0     0.0     0.0   \n",
       "MALE_SINGLE       667.0     0.545727     0.498278    0.0     0.0     1.0   \n",
       "MALE_MAR_or_WID   667.0     0.094453     0.292677    0.0     0.0     0.0   \n",
       "CO-APPLICANT      667.0     0.038981     0.193694    0.0     0.0     0.0   \n",
       "GUARANTOR         667.0     0.049475     0.217021    0.0     0.0     0.0   \n",
       "PRESENT_RESIDENT  667.0     2.835082     1.121627    1.0     2.0     3.0   \n",
       "REAL_ESTATE       667.0     0.280360     0.449512    0.0     0.0     0.0   \n",
       "PROP_UNKN_NONE    667.0     0.155922     0.363054    0.0     0.0     0.0   \n",
       "AGE               667.0    35.421289    11.286776   19.0    26.5    33.0   \n",
       "OTHER_INSTALL     667.0     0.187406     0.390530    0.0     0.0     0.0   \n",
       "RENT              667.0     0.163418     0.370024    0.0     0.0     0.0   \n",
       "OWN_RES           667.0     0.722639     0.448032    0.0     0.0     1.0   \n",
       "NUM_CREDITS       667.0     1.403298     0.572798    1.0     1.0     1.0   \n",
       "JOB               667.0     1.890555     0.637905    0.0     2.0     2.0   \n",
       "NUM_DEPENDENTS    667.0     1.148426     0.355788    1.0     1.0     1.0   \n",
       "TELEPHONE         667.0     0.400300     0.490327    0.0     0.0     0.0   \n",
       "FOREIGN           667.0     0.034483     0.182603    0.0     0.0     0.0   \n",
       "\n",
       "                     75%      max  missing_pct  nunique  \n",
       "CHK_ACCT             3.0      3.0          0.0        4  \n",
       "DURATION            24.0     72.0          0.0       30  \n",
       "HISTORY              4.0      4.0          0.0        5  \n",
       "NEW_CAR              0.0      1.0          0.0        2  \n",
       "USED_CAR             0.0      1.0          0.0        2  \n",
       "FURNITURE            0.0      1.0          0.0        2  \n",
       "RADIO/TV             1.0      1.0          0.0        2  \n",
       "EDUCATION            0.0      1.0          0.0        2  \n",
       "RETRAINING           0.0      1.0          0.0        2  \n",
       "AMOUNT            4013.0  18424.0          0.0      627  \n",
       "SAV_ACCT             2.0      4.0          0.0        5  \n",
       "EMPLOYMENT           3.0      4.0          0.0        5  \n",
       "INSTALL_RATE         4.0      4.0          0.0        4  \n",
       "MALE_DIV             0.0      1.0          0.0        2  \n",
       "MALE_SINGLE          1.0      1.0          0.0        2  \n",
       "MALE_MAR_or_WID      0.0      1.0          0.0        2  \n",
       "CO-APPLICANT         0.0      1.0          0.0        2  \n",
       "GUARANTOR            0.0      1.0          0.0        2  \n",
       "PRESENT_RESIDENT     4.0      4.0          0.0        4  \n",
       "REAL_ESTATE          1.0      1.0          0.0        2  \n",
       "PROP_UNKN_NONE       0.0      1.0          0.0        2  \n",
       "AGE                 42.0     75.0          0.0       52  \n",
       "OTHER_INSTALL        0.0      1.0          0.0        2  \n",
       "RENT                 0.0      1.0          0.0        2  \n",
       "OWN_RES              1.0      1.0          0.0        2  \n",
       "NUM_CREDITS          2.0      4.0          0.0        4  \n",
       "JOB                  2.0      3.0          0.0        4  \n",
       "NUM_DEPENDENTS       1.0      2.0          0.0        2  \n",
       "TELEPHONE            1.0      1.0          0.0        2  \n",
       "FOREIGN              0.0      1.0          0.0        2  "
      ]
     },
     "execution_count": 301,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#描述整体变量的分布情况，其中.T矩阵转置 .apply用于计算新的列括弧内是计算方法，默认对column，assign是用于在原有的矩阵上新增列,\n",
    "#nunique类似于distinct\n",
    "train_x_desc=train_x.select_dtypes(include=['int64']).describe().T\\\n",
    "    .assign(missing_pct=train_x.apply(lambda x : (len(x)-x.count())/len(x)),\n",
    "           nunique = train_x.apply(lambda x: x.nunique()))\n",
    "train_x_desc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(30, 10) (27, 10)\n",
      "Index(['CHK_ACCT', 'HISTORY', 'NEW_CAR', 'USED_CAR', 'FURNITURE', 'RADIO/TV',\n",
      "       'EDUCATION', 'RETRAINING', 'SAV_ACCT', 'EMPLOYMENT', 'INSTALL_RATE',\n",
      "       'MALE_DIV', 'MALE_SINGLE', 'MALE_MAR_or_WID', 'CO-APPLICANT',\n",
      "       'GUARANTOR', 'PRESENT_RESIDENT', 'REAL_ESTATE', 'PROP_UNKN_NONE',\n",
      "       'OTHER_INSTALL', 'RENT', 'OWN_RES', 'NUM_CREDITS', 'JOB',\n",
      "       'NUM_DEPENDENTS', 'TELEPHONE', 'FOREIGN'],\n",
      "      dtype='object')\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CHK_ACCT</th>\n",
       "      <th>HISTORY</th>\n",
       "      <th>NEW_CAR</th>\n",
       "      <th>USED_CAR</th>\n",
       "      <th>FURNITURE</th>\n",
       "      <th>RADIO/TV</th>\n",
       "      <th>EDUCATION</th>\n",
       "      <th>RETRAINING</th>\n",
       "      <th>SAV_ACCT</th>\n",
       "      <th>EMPLOYMENT</th>\n",
       "      <th>...</th>\n",
       "      <th>REAL_ESTATE</th>\n",
       "      <th>PROP_UNKN_NONE</th>\n",
       "      <th>OTHER_INSTALL</th>\n",
       "      <th>RENT</th>\n",
       "      <th>OWN_RES</th>\n",
       "      <th>NUM_CREDITS</th>\n",
       "      <th>JOB</th>\n",
       "      <th>NUM_DEPENDENTS</th>\n",
       "      <th>TELEPHONE</th>\n",
       "      <th>FOREIGN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OBS#</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>206</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>642</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>468</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>962</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>837</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>425</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>236</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>286</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>452</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>87</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>601</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>533</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>745</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>408</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>842</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>231</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>815</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>749</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>786</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>282</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>924</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>937</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>572</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>222</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>387</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>723</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>241</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>959</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>648</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>643</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>564</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>917</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>239</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>349</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>984</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>781</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>988</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>263</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>519</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>928</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>730</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>188</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>480</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>224</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>649</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>944</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>545</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>718</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>931</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>667 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      CHK_ACCT  HISTORY  NEW_CAR  USED_CAR  FURNITURE  RADIO/TV  EDUCATION  \\\n",
       "OBS#                                                                         \n",
       "206          0        4        0         1          0         0          0   \n",
       "642          1        2        0         0          0         0          0   \n",
       "468          3        3        0         0          0         1          0   \n",
       "962          1        3        1         0          0         0          0   \n",
       "837          3        2        0         0          0         1          0   \n",
       "425          1        2        0         0          1         0          0   \n",
       "236          0        2        0         0          0         1          0   \n",
       "286          0        2        1         0          0         0          0   \n",
       "452          3        2        0         0          0         1          0   \n",
       "87           1        4        0         0          1         0          0   \n",
       "601          1        2        0         0          0         1          0   \n",
       "533          3        3        0         1          0         0          0   \n",
       "745          0        4        0         0          1         0          0   \n",
       "408          0        2        0         0          0         1          0   \n",
       "69           3        2        0         0          0         0          1   \n",
       "842          3        3        0         1          0         0          0   \n",
       "231          2        2        0         0          0         1          0   \n",
       "815          0        2        1         0          0         0          0   \n",
       "749          3        2        0         1          0         0          0   \n",
       "786          1        2        0         0          0         0          0   \n",
       "282          3        2        0         0          1         0          0   \n",
       "924          1        2        1         0          0         0          0   \n",
       "368          0        2        0         0          1         0          0   \n",
       "937          2        2        0         0          0         1          0   \n",
       "6            3        2        0         0          0         0          1   \n",
       "572          3        4        0         0          0         1          0   \n",
       "222          0        2        0         0          0         0          1   \n",
       "371          3        2        1         0          0         0          0   \n",
       "387          3        2        0         0          0         1          0   \n",
       "723          0        2        1         0          0         0          0   \n",
       "...        ...      ...      ...       ...        ...       ...        ...   \n",
       "241          0        2        1         0          0         0          0   \n",
       "959          0        2        1         0          0         0          0   \n",
       "648          3        2        1         0          0         0          0   \n",
       "71           3        2        0         1          0         0          0   \n",
       "165          3        2        1         0          0         0          0   \n",
       "643          3        2        0         0          0         0          1   \n",
       "564          1        2        1         0          0         0          0   \n",
       "917          3        2        0         1          0         0          0   \n",
       "239          3        4        0         0          0         1          0   \n",
       "98           1        2        0         0          0         0          0   \n",
       "349          3        3        0         0          0         0          0   \n",
       "984          0        2        0         1          0         0          0   \n",
       "781          1        4        0         0          0         1          0   \n",
       "43           1        3        0         0          0         0          0   \n",
       "988          3        2        0         0          0         1          0   \n",
       "263          0        4        1         0          0         0          0   \n",
       "519          0        2        1         0          0         0          0   \n",
       "928          0        2        0         1          0         0          0   \n",
       "730          2        4        0         0          0         0          0   \n",
       "188          1        4        1         0          0         0          0   \n",
       "480          0        4        0         0          1         0          0   \n",
       "296          1        2        0         0          1         0          0   \n",
       "224          3        3        0         0          0         0          0   \n",
       "649          2        2        1         0          0         0          0   \n",
       "944          3        4        1         0          0         0          0   \n",
       "545          3        4        1         0          0         0          0   \n",
       "718          3        2        0         0          0         1          0   \n",
       "50           3        2        0         0          0         1          0   \n",
       "363          2        3        1         0          0         0          0   \n",
       "931          0        2        0         0          1         0          0   \n",
       "\n",
       "      RETRAINING  SAV_ACCT  EMPLOYMENT   ...     REAL_ESTATE  PROP_UNKN_NONE  \\\n",
       "OBS#                                     ...                                   \n",
       "206            0         0           4   ...               0               1   \n",
       "642            0         0           4   ...               0               0   \n",
       "468            0         4           4   ...               0               0   \n",
       "962            0         0           2   ...               0               0   \n",
       "837            0         4           2   ...               0               0   \n",
       "425            0         4           4   ...               0               0   \n",
       "236            0         0           0   ...               0               0   \n",
       "286            0         0           1   ...               1               0   \n",
       "452            0         0           2   ...               1               0   \n",
       "87             0         0           1   ...               0               0   \n",
       "601            0         0           1   ...               1               0   \n",
       "533            0         0           2   ...               1               0   \n",
       "745            0         4           3   ...               0               0   \n",
       "408            0         0           1   ...               1               0   \n",
       "69             0         0           2   ...               0               1   \n",
       "842            0         0           2   ...               1               0   \n",
       "231            0         0           2   ...               0               0   \n",
       "815            0         0           3   ...               0               1   \n",
       "749            0         4           2   ...               0               0   \n",
       "786            1         3           2   ...               0               0   \n",
       "282            0         0           2   ...               1               0   \n",
       "924            0         0           3   ...               0               0   \n",
       "368            0         0           1   ...               0               0   \n",
       "937            0         0           2   ...               1               0   \n",
       "6              0         4           2   ...               0               1   \n",
       "572            0         0           3   ...               0               0   \n",
       "222            0         4           2   ...               0               0   \n",
       "371            0         4           2   ...               1               0   \n",
       "387            0         4           1   ...               1               0   \n",
       "723            0         0           2   ...               1               0   \n",
       "...          ...       ...         ...   ...             ...             ...   \n",
       "241            0         4           4   ...               0               0   \n",
       "959            0         0           2   ...               0               0   \n",
       "648            0         2           2   ...               0               0   \n",
       "71             0         0           2   ...               0               0   \n",
       "165            0         2           4   ...               0               0   \n",
       "643            0         1           2   ...               0               0   \n",
       "564            0         4           2   ...               0               1   \n",
       "917            0         1           2   ...               1               0   \n",
       "239            0         0           2   ...               0               0   \n",
       "98             1         1           2   ...               0               0   \n",
       "349            1         1           2   ...               1               0   \n",
       "984            0         0           2   ...               0               0   \n",
       "781            0         0           3   ...               1               0   \n",
       "43             0         0           2   ...               1               0   \n",
       "988            0         1           0   ...               1               0   \n",
       "263            0         0           4   ...               0               1   \n",
       "519            0         1           4   ...               0               0   \n",
       "928            0         0           3   ...               0               1   \n",
       "730            1         3           2   ...               1               0   \n",
       "188            0         0           0   ...               0               0   \n",
       "480            0         0           4   ...               0               0   \n",
       "296            0         0           1   ...               0               0   \n",
       "224            1         4           2   ...               1               0   \n",
       "649            0         0           3   ...               0               1   \n",
       "944            0         0           3   ...               1               0   \n",
       "545            0         0           4   ...               1               0   \n",
       "718            0         0           2   ...               0               1   \n",
       "50             0         1           2   ...               1               0   \n",
       "363            0         0           2   ...               0               0   \n",
       "931            0         0           1   ...               0               0   \n",
       "\n",
       "      OTHER_INSTALL  RENT  OWN_RES  NUM_CREDITS  JOB  NUM_DEPENDENTS  \\\n",
       "OBS#                                                                   \n",
       "206               0     0        0            3    3               2   \n",
       "642               0     0        1            2    1               1   \n",
       "468               1     0        1            2    2               2   \n",
       "962               0     0        1            2    2               1   \n",
       "837               0     0        1            1    2               1   \n",
       "425               1     0        1            1    2               1   \n",
       "236               1     0        1            1    3               2   \n",
       "286               0     0        1            1    1               1   \n",
       "452               0     0        1            1    2               1   \n",
       "87                0     0        1            2    2               1   \n",
       "601               0     0        1            1    2               1   \n",
       "533               0     1        0            1    2               1   \n",
       "745               0     0        1            2    3               1   \n",
       "408               0     0        1            1    2               1   \n",
       "69                1     0        0            1    2               1   \n",
       "842               1     0        1            2    1               1   \n",
       "231               0     0        1            1    2               1   \n",
       "815               0     0        0            1    2               2   \n",
       "749               0     0        1            1    2               1   \n",
       "786               0     0        1            1    1               1   \n",
       "282               0     0        1            1    2               1   \n",
       "924               0     1        0            1    2               2   \n",
       "368               0     1        0            1    2               1   \n",
       "937               0     0        1            1    1               1   \n",
       "6                 0     0        0            1    1               2   \n",
       "572               0     0        1            1    2               1   \n",
       "222               1     1        0            1    2               1   \n",
       "371               0     0        1            1    2               1   \n",
       "387               0     1        0            1    2               1   \n",
       "723               0     0        1            1    1               1   \n",
       "...             ...   ...      ...          ...  ...             ...   \n",
       "241               1     0        1            1    2               1   \n",
       "959               0     0        1            1    1               1   \n",
       "648               0     0        1            1    2               1   \n",
       "71                1     0        1            1    2               1   \n",
       "165               0     0        1            1    2               1   \n",
       "643               0     0        1            1    3               1   \n",
       "564               0     0        0            1    2               1   \n",
       "917               0     0        1            1    2               2   \n",
       "239               0     0        1            2    2               1   \n",
       "98                0     0        1            1    2               1   \n",
       "349               0     0        1            2    1               1   \n",
       "984               0     0        1            1    2               2   \n",
       "781               0     0        1            2    2               1   \n",
       "43                0     0        1            1    1               2   \n",
       "988               0     0        1            1    2               1   \n",
       "263               0     0        0            3    3               1   \n",
       "519               0     0        1            1    2               1   \n",
       "928               1     0        0            3    2               2   \n",
       "730               0     0        1            2    2               1   \n",
       "188               0     0        0            3    0               1   \n",
       "480               0     0        1            2    2               2   \n",
       "296               0     0        1            1    2               1   \n",
       "224               0     0        1            2    2               2   \n",
       "649               1     0        0            1    2               2   \n",
       "944               0     0        1            3    1               2   \n",
       "545               0     0        1            2    1               1   \n",
       "718               0     0        0            1    3               1   \n",
       "50                0     0        1            1    2               1   \n",
       "363               1     0        1            2    2               1   \n",
       "931               0     0        1            1    1               1   \n",
       "\n",
       "      TELEPHONE  FOREIGN  \n",
       "OBS#                      \n",
       "206           1        0  \n",
       "642           0        0  \n",
       "468           0        0  \n",
       "962           0        0  \n",
       "837           0        0  \n",
       "425           1        0  \n",
       "236           0        0  \n",
       "286           1        0  \n",
       "452           0        0  \n",
       "87            0        0  \n",
       "601           0        0  \n",
       "533           0        0  \n",
       "745           1        0  \n",
       "408           0        1  \n",
       "69            1        0  \n",
       "842           0        0  \n",
       "231           0        0  \n",
       "815           0        0  \n",
       "749           0        0  \n",
       "786           1        0  \n",
       "282           0        0  \n",
       "924           1        0  \n",
       "368           0        0  \n",
       "937           0        0  \n",
       "6             1        0  \n",
       "572           0        0  \n",
       "222           1        0  \n",
       "371           0        0  \n",
       "387           1        0  \n",
       "723           0        0  \n",
       "...         ...      ...  \n",
       "241           0        0  \n",
       "959           0        0  \n",
       "648           0        0  \n",
       "71            0        0  \n",
       "165           0        0  \n",
       "643           1        0  \n",
       "564           1        0  \n",
       "917           0        0  \n",
       "239           0        0  \n",
       "98            0        0  \n",
       "349           0        0  \n",
       "984           0        0  \n",
       "781           0        0  \n",
       "43            1        0  \n",
       "988           0        0  \n",
       "263           1        0  \n",
       "519           1        0  \n",
       "928           1        0  \n",
       "730           1        0  \n",
       "188           1        0  \n",
       "480           1        0  \n",
       "296           1        0  \n",
       "224           1        0  \n",
       "649           0        0  \n",
       "944           0        0  \n",
       "545           0        0  \n",
       "718           1        0  \n",
       "50            0        0  \n",
       "363           1        0  \n",
       "931           0        1  \n",
       "\n",
       "[667 rows x 27 columns]"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#提取离散性变量\n",
    "train_x_dis=train_x_desc.loc[train_x_desc['nunique']<=5]\n",
    "#ax=sns.distplot(sample['CHK_ACCT'], kde=False, fit=norm);#fit拟合\n",
    "print(train_x_desc.shape,train_x_dis.shape)\n",
    "print(train_x_dis.index)\n",
    "\n",
    "\n",
    "train_x_dis_p=train_x.loc[:,[var for var in train_x_dis.index]]\n",
    "train_x_dis_p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 303,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['CHK_ACCT', 'HISTORY', 'NEW_CAR', 'USED_CAR', 'FURNITURE', 'RADIO/TV',\n",
      "       'EDUCATION', 'RETRAINING', 'SAV_ACCT', 'EMPLOYMENT', 'INSTALL_RATE',\n",
      "       'MALE_DIV', 'MALE_SINGLE', 'MALE_MAR_or_WID', 'CO-APPLICANT',\n",
      "       'GUARANTOR', 'PRESENT_RESIDENT', 'REAL_ESTATE', 'PROP_UNKN_NONE',\n",
      "       'OTHER_INSTALL', 'RENT', 'OWN_RES', 'NUM_CREDITS', 'JOB',\n",
      "       'NUM_DEPENDENTS', 'TELEPHONE'],\n",
      "      dtype='object')\n",
      "      CHK_ACCT  HISTORY  NEW_CAR  USED_CAR  FURNITURE  RADIO/TV  EDUCATION  \\\n",
      "OBS#                                                                         \n",
      "206          0        4        0         1          0         0          0   \n",
      "642          1        2        0         0          0         0          0   \n",
      "468          3        3        0         0          0         1          0   \n",
      "962          1        3        1         0          0         0          0   \n",
      "837          3        2        0         0          0         1          0   \n",
      "425          1        2        0         0          1         0          0   \n",
      "236          0        2        0         0          0         1          0   \n",
      "286          0        2        1         0          0         0          0   \n",
      "452          3        2        0         0          0         1          0   \n",
      "87           1        4        0         0          1         0          0   \n",
      "601          1        2        0         0          0         1          0   \n",
      "533          3        3        0         1          0         0          0   \n",
      "745          0        4        0         0          1         0          0   \n",
      "408          0        2        0         0          0         1          0   \n",
      "69           3        2        0         0          0         0          1   \n",
      "842          3        3        0         1          0         0          0   \n",
      "231          2        2        0         0          0         1          0   \n",
      "815          0        2        1         0          0         0          0   \n",
      "749          3        2        0         1          0         0          0   \n",
      "786          1        2        0         0          0         0          0   \n",
      "282          3        2        0         0          1         0          0   \n",
      "924          1        2        1         0          0         0          0   \n",
      "368          0        2        0         0          1         0          0   \n",
      "937          2        2        0         0          0         1          0   \n",
      "6            3        2        0         0          0         0          1   \n",
      "572          3        4        0         0          0         1          0   \n",
      "222          0        2        0         0          0         0          1   \n",
      "371          3        2        1         0          0         0          0   \n",
      "387          3        2        0         0          0         1          0   \n",
      "723          0        2        1         0          0         0          0   \n",
      "...        ...      ...      ...       ...        ...       ...        ...   \n",
      "241          0        2        1         0          0         0          0   \n",
      "959          0        2        1         0          0         0          0   \n",
      "648          3        2        1         0          0         0          0   \n",
      "71           3        2        0         1          0         0          0   \n",
      "165          3        2        1         0          0         0          0   \n",
      "643          3        2        0         0          0         0          1   \n",
      "564          1        2        1         0          0         0          0   \n",
      "917          3        2        0         1          0         0          0   \n",
      "239          3        4        0         0          0         1          0   \n",
      "98           1        2        0         0          0         0          0   \n",
      "349          3        3        0         0          0         0          0   \n",
      "984          0        2        0         1          0         0          0   \n",
      "781          1        4        0         0          0         1          0   \n",
      "43           1        3        0         0          0         0          0   \n",
      "988          3        2        0         0          0         1          0   \n",
      "263          0        4        1         0          0         0          0   \n",
      "519          0        2        1         0          0         0          0   \n",
      "928          0        2        0         1          0         0          0   \n",
      "730          2        4        0         0          0         0          0   \n",
      "188          1        4        1         0          0         0          0   \n",
      "480          0        4        0         0          1         0          0   \n",
      "296          1        2        0         0          1         0          0   \n",
      "224          3        3        0         0          0         0          0   \n",
      "649          2        2        1         0          0         0          0   \n",
      "944          3        4        1         0          0         0          0   \n",
      "545          3        4        1         0          0         0          0   \n",
      "718          3        2        0         0          0         1          0   \n",
      "50           3        2        0         0          0         1          0   \n",
      "363          2        3        1         0          0         0          0   \n",
      "931          0        2        0         0          1         0          0   \n",
      "\n",
      "      RETRAINING  SAV_ACCT  EMPLOYMENT   ...     REAL_ESTATE  PROP_UNKN_NONE  \\\n",
      "OBS#                                     ...                                   \n",
      "206            0         0           4   ...               0               1   \n",
      "642            0         0           4   ...               0               0   \n",
      "468            0         4           4   ...               0               0   \n",
      "962            0         0           2   ...               0               0   \n",
      "837            0         4           2   ...               0               0   \n",
      "425            0         4           4   ...               0               0   \n",
      "236            0         0           0   ...               0               0   \n",
      "286            0         0           1   ...               1               0   \n",
      "452            0         0           2   ...               1               0   \n",
      "87             0         0           1   ...               0               0   \n",
      "601            0         0           1   ...               1               0   \n",
      "533            0         0           2   ...               1               0   \n",
      "745            0         4           3   ...               0               0   \n",
      "408            0         0           1   ...               1               0   \n",
      "69             0         0           2   ...               0               1   \n",
      "842            0         0           2   ...               1               0   \n",
      "231            0         0           2   ...               0               0   \n",
      "815            0         0           3   ...               0               1   \n",
      "749            0         4           2   ...               0               0   \n",
      "786            1         3           2   ...               0               0   \n",
      "282            0         0           2   ...               1               0   \n",
      "924            0         0           3   ...               0               0   \n",
      "368            0         0           1   ...               0               0   \n",
      "937            0         0           2   ...               1               0   \n",
      "6              0         4           2   ...               0               1   \n",
      "572            0         0           3   ...               0               0   \n",
      "222            0         4           2   ...               0               0   \n",
      "371            0         4           2   ...               1               0   \n",
      "387            0         4           1   ...               1               0   \n",
      "723            0         0           2   ...               1               0   \n",
      "...          ...       ...         ...   ...             ...             ...   \n",
      "241            0         4           4   ...               0               0   \n",
      "959            0         0           2   ...               0               0   \n",
      "648            0         2           2   ...               0               0   \n",
      "71             0         0           2   ...               0               0   \n",
      "165            0         2           4   ...               0               0   \n",
      "643            0         1           2   ...               0               0   \n",
      "564            0         4           2   ...               0               1   \n",
      "917            0         1           2   ...               1               0   \n",
      "239            0         0           2   ...               0               0   \n",
      "98             1         1           2   ...               0               0   \n",
      "349            1         1           2   ...               1               0   \n",
      "984            0         0           2   ...               0               0   \n",
      "781            0         0           3   ...               1               0   \n",
      "43             0         0           2   ...               1               0   \n",
      "988            0         1           0   ...               1               0   \n",
      "263            0         0           4   ...               0               1   \n",
      "519            0         1           4   ...               0               0   \n",
      "928            0         0           3   ...               0               1   \n",
      "730            1         3           2   ...               1               0   \n",
      "188            0         0           0   ...               0               0   \n",
      "480            0         0           4   ...               0               0   \n",
      "296            0         0           1   ...               0               0   \n",
      "224            1         4           2   ...               1               0   \n",
      "649            0         0           3   ...               0               1   \n",
      "944            0         0           3   ...               1               0   \n",
      "545            0         0           4   ...               1               0   \n",
      "718            0         0           2   ...               0               1   \n",
      "50             0         1           2   ...               1               0   \n",
      "363            0         0           2   ...               0               0   \n",
      "931            0         0           1   ...               0               0   \n",
      "\n",
      "      OTHER_INSTALL  RENT  OWN_RES  NUM_CREDITS  JOB  NUM_DEPENDENTS  \\\n",
      "OBS#                                                                   \n",
      "206               0     0        0            3    3               2   \n",
      "642               0     0        1            2    1               1   \n",
      "468               1     0        1            2    2               2   \n",
      "962               0     0        1            2    2               1   \n",
      "837               0     0        1            1    2               1   \n",
      "425               1     0        1            1    2               1   \n",
      "236               1     0        1            1    3               2   \n",
      "286               0     0        1            1    1               1   \n",
      "452               0     0        1            1    2               1   \n",
      "87                0     0        1            2    2               1   \n",
      "601               0     0        1            1    2               1   \n",
      "533               0     1        0            1    2               1   \n",
      "745               0     0        1            2    3               1   \n",
      "408               0     0        1            1    2               1   \n",
      "69                1     0        0            1    2               1   \n",
      "842               1     0        1            2    1               1   \n",
      "231               0     0        1            1    2               1   \n",
      "815               0     0        0            1    2               2   \n",
      "749               0     0        1            1    2               1   \n",
      "786               0     0        1            1    1               1   \n",
      "282               0     0        1            1    2               1   \n",
      "924               0     1        0            1    2               2   \n",
      "368               0     1        0            1    2               1   \n",
      "937               0     0        1            1    1               1   \n",
      "6                 0     0        0            1    1               2   \n",
      "572               0     0        1            1    2               1   \n",
      "222               1     1        0            1    2               1   \n",
      "371               0     0        1            1    2               1   \n",
      "387               0     1        0            1    2               1   \n",
      "723               0     0        1            1    1               1   \n",
      "...             ...   ...      ...          ...  ...             ...   \n",
      "241               1     0        1            1    2               1   \n",
      "959               0     0        1            1    1               1   \n",
      "648               0     0        1            1    2               1   \n",
      "71                1     0        1            1    2               1   \n",
      "165               0     0        1            1    2               1   \n",
      "643               0     0        1            1    3               1   \n",
      "564               0     0        0            1    2               1   \n",
      "917               0     0        1            1    2               2   \n",
      "239               0     0        1            2    2               1   \n",
      "98                0     0        1            1    2               1   \n",
      "349               0     0        1            2    1               1   \n",
      "984               0     0        1            1    2               2   \n",
      "781               0     0        1            2    2               1   \n",
      "43                0     0        1            1    1               2   \n",
      "988               0     0        1            1    2               1   \n",
      "263               0     0        0            3    3               1   \n",
      "519               0     0        1            1    2               1   \n",
      "928               1     0        0            3    2               2   \n",
      "730               0     0        1            2    2               1   \n",
      "188               0     0        0            3    0               1   \n",
      "480               0     0        1            2    2               2   \n",
      "296               0     0        1            1    2               1   \n",
      "224               0     0        1            2    2               2   \n",
      "649               1     0        0            1    2               2   \n",
      "944               0     0        1            3    1               2   \n",
      "545               0     0        1            2    1               1   \n",
      "718               0     0        0            1    3               1   \n",
      "50                0     0        1            1    2               1   \n",
      "363               1     0        1            2    2               1   \n",
      "931               0     0        1            1    1               1   \n",
      "\n",
      "      TELEPHONE  FOREIGN  \n",
      "OBS#                      \n",
      "206           1        0  \n",
      "642           0        0  \n",
      "468           0        0  \n",
      "962           0        0  \n",
      "837           0        0  \n",
      "425           1        0  \n",
      "236           0        0  \n",
      "286           1        0  \n",
      "452           0        0  \n",
      "87            0        0  \n",
      "601           0        0  \n",
      "533           0        0  \n",
      "745           1        0  \n",
      "408           0        1  \n",
      "69            1        0  \n",
      "842           0        0  \n",
      "231           0        0  \n",
      "815           0        0  \n",
      "749           0        0  \n",
      "786           1        0  \n",
      "282           0        0  \n",
      "924           1        0  \n",
      "368           0        0  \n",
      "937           0        0  \n",
      "6             1        0  \n",
      "572           0        0  \n",
      "222           1        0  \n",
      "371           0        0  \n",
      "387           1        0  \n",
      "723           0        0  \n",
      "...         ...      ...  \n",
      "241           0        0  \n",
      "959           0        0  \n",
      "648           0        0  \n",
      "71            0        0  \n",
      "165           0        0  \n",
      "643           1        0  \n",
      "564           1        0  \n",
      "917           0        0  \n",
      "239           0        0  \n",
      "98            0        0  \n",
      "349           0        0  \n",
      "984           0        0  \n",
      "781           0        0  \n",
      "43            1        0  \n",
      "988           0        0  \n",
      "263           1        0  \n",
      "519           1        0  \n",
      "928           1        0  \n",
      "730           1        0  \n",
      "188           1        0  \n",
      "480           1        0  \n",
      "296           1        0  \n",
      "224           1        0  \n",
      "649           0        0  \n",
      "944           0        0  \n",
      "545           0        0  \n",
      "718           1        0  \n",
      "50            0        0  \n",
      "363           1        0  \n",
      "931           0        1  \n",
      "\n",
      "[667 rows x 27 columns]\n"
     ]
    }
   ],
   "source": [
    "tmp=train_x_dis_p.copy()\n",
    "col=train_x_dis_p.iloc[:,:26].columns\n",
    "\n",
    "print(col)\n",
    "print(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CHK_ACCT\n",
      "HISTORY\n",
      "NEW_CAR\n",
      "USED_CAR\n",
      "FURNITURE\n",
      "RADIO/TV\n",
      "EDUCATION\n",
      "RETRAINING\n",
      "SAV_ACCT\n",
      "EMPLOYMENT\n",
      "INSTALL_RATE\n",
      "MALE_DIV\n",
      "MALE_SINGLE\n",
      "MALE_MAR_or_WID\n",
      "CO-APPLICANT\n",
      "GUARANTOR\n",
      "PRESENT_RESIDENT\n",
      "REAL_ESTATE\n",
      "PROP_UNKN_NONE\n",
      "OTHER_INSTALL\n",
      "RENT\n",
      "OWN_RES\n",
      "NUM_CREDITS\n",
      "JOB\n",
      "NUM_DEPENDENTS\n",
      "TELEPHONE\n"
     ]
    }
   ],
   "source": [
    "##计算每个离散变量之间的卡方值，p值\n",
    "all_x_df=pd.DataFrame()\n",
    "for c in col:\n",
    "    print(c)\n",
    "    x=tmp.pop(c)\n",
    "    c2,pvalue=chi2(tmp,x)\n",
    "    c2_df=pd.DataFrame(pvalue)\n",
    "    c2_df.index=[p for p in tmp.columns]\n",
    "    c2_df.columns=[c]\n",
    "    all_x_df=all_x_df.join(c2_df, how='outer')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 305,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                      CHK_ACCT       HISTORY       NEW_CAR  USED_CAR  \\\n",
      "CO-APPLICANT      5.122986e-01  3.346488e-01  9.700792e-01  0.268670   \n",
      "EDUCATION         9.731281e-01  4.293036e-01  1.503465e-03  0.049176   \n",
      "EMPLOYMENT        1.911581e-03  2.340380e-02  9.021446e-01  0.308725   \n",
      "FOREIGN           5.259791e-01  2.533899e-01  1.108978e-03  0.100549   \n",
      "FURNITURE         2.086530e-01  4.176329e-01  1.425203e-09  0.000176   \n",
      "GUARANTOR         2.492652e-04  7.553469e-02  4.798340e-01  0.161787   \n",
      "HISTORY           4.391954e-03           NaN           NaN       NaN   \n",
      "INSTALL_RATE      4.297099e-01  8.951400e-01  1.006389e-01  0.134711   \n",
      "JOB               5.827214e-01  9.043435e-01  4.275260e-01  0.046560   \n",
      "MALE_DIV          3.297983e-01  8.286314e-01  9.077223e-01  0.792453   \n",
      "MALE_MAR_or_WID   3.379427e-01  7.212451e-01  4.156907e-01  0.283003   \n",
      "MALE_SINGLE       5.699384e-01  2.323321e-01  4.675828e-01  0.132377   \n",
      "NEW_CAR           1.492693e-01  4.318202e-01           NaN       NaN   \n",
      "NUM_CREDITS       5.919379e-01  2.910614e-12  5.842959e-01  0.980355   \n",
      "NUM_DEPENDENTS    8.449920e-01  9.471071e-01  4.502303e-01  0.508367   \n",
      "OTHER_INSTALL     8.546491e-01  4.876545e-08  6.366879e-01  0.582936   \n",
      "OWN_RES           3.475727e-01  9.089888e-01  6.880227e-01  0.020551   \n",
      "PRESENT_RESIDENT  2.021831e-01  4.202242e-01  3.355257e-01  0.026640   \n",
      "PROP_UNKN_NONE    3.281547e-01  1.220136e-01  5.352981e-01  0.000390   \n",
      "RADIO/TV          3.416288e-02  3.987833e-01  1.642342e-14  0.000002   \n",
      "REAL_ESTATE       7.665932e-01  5.302724e-01  5.728551e-01  0.005541   \n",
      "RENT              2.084663e-01  3.059918e-01  7.331475e-01  0.423552   \n",
      "RETRAINING        3.065880e-02  1.133083e-07  2.577501e-05  0.009112   \n",
      "SAV_ACCT          3.363484e-19  1.455098e-01  6.689411e-01  0.000001   \n",
      "TELEPHONE         2.643522e-01  7.549175e-01  6.182567e-01  0.005249   \n",
      "USED_CAR          5.706857e-02  8.261693e-01  3.786770e-06       NaN   \n",
      "\n",
      "                     FURNITURE  RADIO/TV  EDUCATION  RETRAINING  SAV_ACCT  \\\n",
      "CO-APPLICANT      2.357347e-01  0.836641   0.244700    0.115582  0.340609   \n",
      "EDUCATION         7.131731e-03  0.000247        NaN         NaN       NaN   \n",
      "EMPLOYMENT        1.172990e-01  0.102686   0.900969    0.706333  0.024411   \n",
      "FOREIGN           9.403138e-01  0.222117   0.273890    0.459292  0.811192   \n",
      "FURNITURE                  NaN       NaN        NaN         NaN       NaN   \n",
      "GUARANTOR         3.800241e-01  0.001177   0.189994    0.248085  0.003763   \n",
      "HISTORY                    NaN       NaN        NaN         NaN       NaN   \n",
      "INSTALL_RATE      3.565224e-01  0.003840   0.857082    0.875559  0.943958   \n",
      "JOB               8.757103e-01  0.944404   0.756455    0.444409  0.991798   \n",
      "MALE_DIV          6.299967e-01  0.080778   0.611543    0.010718  0.552085   \n",
      "MALE_MAR_or_WID   1.614386e-02  0.000130   0.218742    0.496242  0.862415   \n",
      "MALE_SINGLE       3.069339e-01  0.464703   0.810699    0.903441  0.644056   \n",
      "NEW_CAR                    NaN       NaN        NaN         NaN       NaN   \n",
      "NUM_CREDITS       3.763563e-01  0.622163   0.962871    0.515292  0.722283   \n",
      "NUM_DEPENDENTS    4.072097e-01  0.442132   0.726179    0.937786  0.984237   \n",
      "OTHER_INSTALL     7.288430e-01  0.668721   0.625191    0.051657  0.981403   \n",
      "OWN_RES           8.386954e-01  0.078255   0.219403    0.251954  0.929614   \n",
      "PRESENT_RESIDENT  8.476087e-01  0.046984   0.878444    0.350705  0.497922   \n",
      "PROP_UNKN_NONE    4.902088e-02  0.029071   0.000383    0.079232  0.891166   \n",
      "RADIO/TV          7.670611e-11       NaN        NaN         NaN       NaN   \n",
      "REAL_ESTATE       1.456398e-01  0.016337   0.035013    0.080293  0.019110   \n",
      "RENT              1.920900e-02  0.071262   0.862263    0.399544  0.906276   \n",
      "RETRAINING        3.610027e-04  0.000001   0.082298         NaN       NaN   \n",
      "SAV_ACCT          3.388964e-02  0.994404   0.961830    0.527594       NaN   \n",
      "TELEPHONE         5.202009e-01  0.054326   0.952766    0.090964  0.665738   \n",
      "USED_CAR                   NaN       NaN        NaN         NaN       NaN   \n",
      "\n",
      "                  EMPLOYMENT    ...      PRESENT_RESIDENT   REAL_ESTATE  \\\n",
      "CO-APPLICANT        0.480347    ...                   NaN           NaN   \n",
      "EDUCATION                NaN    ...                   NaN           NaN   \n",
      "EMPLOYMENT               NaN    ...                   NaN           NaN   \n",
      "FOREIGN             0.587407    ...              0.573001  4.555206e-04   \n",
      "FURNITURE                NaN    ...                   NaN           NaN   \n",
      "GUARANTOR           0.485907    ...                   NaN           NaN   \n",
      "HISTORY                  NaN    ...                   NaN           NaN   \n",
      "INSTALL_RATE        0.158177    ...                   NaN           NaN   \n",
      "JOB                 0.776071    ...              0.826188  2.881675e-03   \n",
      "MALE_DIV            0.560685    ...                   NaN           NaN   \n",
      "MALE_MAR_or_WID     0.470671    ...                   NaN           NaN   \n",
      "MALE_SINGLE         0.000078    ...                   NaN           NaN   \n",
      "NEW_CAR                  NaN    ...                   NaN           NaN   \n",
      "NUM_CREDITS         0.248766    ...              0.318602  7.387452e-01   \n",
      "NUM_DEPENDENTS      0.974144    ...              0.914705  9.202671e-01   \n",
      "OTHER_INSTALL       0.489483    ...              0.986806  1.606637e-01   \n",
      "OWN_RES             0.913762    ...              0.000145  5.572618e-02   \n",
      "PRESENT_RESIDENT    0.000001    ...                   NaN           NaN   \n",
      "PROP_UNKN_NONE      0.001004    ...              0.000002  1.949460e-10   \n",
      "RADIO/TV                 NaN    ...                   NaN           NaN   \n",
      "REAL_ESTATE         0.015881    ...              0.266961           NaN   \n",
      "RENT                0.087673    ...              0.001274  6.027327e-01   \n",
      "RETRAINING               NaN    ...                   NaN           NaN   \n",
      "SAV_ACCT                 NaN    ...                   NaN           NaN   \n",
      "TELEPHONE           0.161207    ...              0.135143  7.076976e-04   \n",
      "USED_CAR                 NaN    ...                   NaN           NaN   \n",
      "\n",
      "                  PROP_UNKN_NONE  OTHER_INSTALL          RENT   OWN_RES  \\\n",
      "CO-APPLICANT                 NaN            NaN           NaN       NaN   \n",
      "EDUCATION                    NaN            NaN           NaN       NaN   \n",
      "EMPLOYMENT                   NaN            NaN           NaN       NaN   \n",
      "FOREIGN             3.928113e-02       0.217024  6.687856e-01  0.115508   \n",
      "FURNITURE                    NaN            NaN           NaN       NaN   \n",
      "GUARANTOR                    NaN            NaN           NaN       NaN   \n",
      "HISTORY                      NaN            NaN           NaN       NaN   \n",
      "INSTALL_RATE                 NaN            NaN           NaN       NaN   \n",
      "JOB                 5.840330e-02       0.790542  8.150995e-01  0.404689   \n",
      "MALE_DIV                     NaN            NaN           NaN       NaN   \n",
      "MALE_MAR_or_WID              NaN            NaN           NaN       NaN   \n",
      "MALE_SINGLE                  NaN            NaN           NaN       NaN   \n",
      "NEW_CAR                      NaN            NaN           NaN       NaN   \n",
      "NUM_CREDITS         4.678877e-01       0.828407  4.816631e-01  0.906417   \n",
      "NUM_DEPENDENTS      2.927533e-01       0.749627  4.830094e-01  0.775034   \n",
      "OTHER_INSTALL       1.085028e-01            NaN           NaN       NaN   \n",
      "OWN_RES             2.493242e-11       0.755296  2.918882e-22       NaN   \n",
      "PRESENT_RESIDENT             NaN            NaN           NaN       NaN   \n",
      "PROP_UNKN_NONE               NaN            NaN           NaN       NaN   \n",
      "RADIO/TV                     NaN            NaN           NaN       NaN   \n",
      "REAL_ESTATE                  NaN            NaN           NaN       NaN   \n",
      "RENT                1.754803e-02       0.068302           NaN       NaN   \n",
      "RETRAINING                   NaN            NaN           NaN       NaN   \n",
      "SAV_ACCT                     NaN            NaN           NaN       NaN   \n",
      "TELEPHONE           3.389479e-03       0.349751  6.630173e-01  0.221445   \n",
      "USED_CAR                     NaN            NaN           NaN       NaN   \n",
      "\n",
      "                  NUM_CREDITS           JOB  NUM_DEPENDENTS  TELEPHONE  \n",
      "CO-APPLICANT              NaN           NaN             NaN        NaN  \n",
      "EDUCATION                 NaN           NaN             NaN        NaN  \n",
      "EMPLOYMENT                NaN           NaN             NaN        NaN  \n",
      "FOREIGN              0.876437  2.675238e-02        0.007149   0.008254  \n",
      "FURNITURE                 NaN           NaN             NaN        NaN  \n",
      "GUARANTOR                 NaN           NaN             NaN        NaN  \n",
      "HISTORY                   NaN           NaN             NaN        NaN  \n",
      "INSTALL_RATE              NaN           NaN             NaN        NaN  \n",
      "JOB                  0.538222           NaN             NaN        NaN  \n",
      "MALE_DIV                  NaN           NaN             NaN        NaN  \n",
      "MALE_MAR_or_WID           NaN           NaN             NaN        NaN  \n",
      "MALE_SINGLE               NaN           NaN             NaN        NaN  \n",
      "NEW_CAR                   NaN           NaN             NaN        NaN  \n",
      "NUM_CREDITS               NaN           NaN             NaN        NaN  \n",
      "NUM_DEPENDENTS       0.573779  5.732489e-01             NaN        NaN  \n",
      "OTHER_INSTALL             NaN           NaN             NaN        NaN  \n",
      "OWN_RES                   NaN           NaN             NaN        NaN  \n",
      "PRESENT_RESIDENT          NaN           NaN             NaN        NaN  \n",
      "PROP_UNKN_NONE            NaN           NaN             NaN        NaN  \n",
      "RADIO/TV                  NaN           NaN             NaN        NaN  \n",
      "REAL_ESTATE               NaN           NaN             NaN        NaN  \n",
      "RENT                      NaN           NaN             NaN        NaN  \n",
      "RETRAINING                NaN           NaN             NaN        NaN  \n",
      "SAV_ACCT                  NaN           NaN             NaN        NaN  \n",
      "TELEPHONE            0.165886  3.094421e-13        0.949173        NaN  \n",
      "USED_CAR                  NaN           NaN             NaN        NaN  \n",
      "\n",
      "[26 rows x 26 columns]\n"
     ]
    }
   ],
   "source": [
    "train_x_dis_p_result=all_x_df.sort_index(axis=0)\n",
    "print(train_x_dis_p_result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHfCAYAAABUNwIrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFBtJREFUeJzt3W1slfX5wPHrtKWIRSZm+opARDce0s1k8zFuupBFnQGa\nibrpQjUYR9XAHqIT2FCMlY0Hl0y3GYySzCpRo918WJzbPzgncaAvpoEBDhZipixMoZmClHbt/X9h\nOINRpEXk9Fx8PgnJ6Tk97e9cudt++7vLOaWiKIoAAEisptILAAD4pAkeACA9wQMApCd4AID0BA8A\nkJ7gAQDSq/uoG9955/2jtY6qMnLk8dHR8UGll1EVzKr/zKp/zKn/zKp/zKn/BvusTj75hIPeZofn\nMNTV1VZ6CVXDrPrPrPrHnPrPrPrHnPqvmmcleACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4A\nID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDS\nEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3B\nAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApFdX6QUcSxYuXBAdHTsqvYwB\n2bVrV0RENDQ0HNb9a2troqen90guqV9Gjjwp5s1bcNQ/LwCDk+A5ijo6dsT27dujNGRYpZfSb0V3\nZ0RE7OkpVXgl/Vd07670EgAYZATPUVYaMiyGnz610svot52bn46IqMo1A8Be/oYHAEhP8AAA6Qke\nACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA\n0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9\nwQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8\nAEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMA\npCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6\nggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4\nAID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKRX8eB5/PFH4vHHH6n0MoDkfK+BY1vF\ng+fVV9fEq6+uqfQygOR8r4FjW8WDBwDgkyZ4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAg\nPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANIT\nPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcED\nAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABA\neoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQn\neACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIH\nAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA\n9AQPwMfQ1rY82tqWH9Z9N25cHxs3rj/o7TNmXB0zZlx9uEuriEM9psFm5sxr4rLLLqv0MtIbDMdF\nXUU/O0CVe/HFlRERMX36jAHf96mnnoyIiPHjJx7RNVVStT2m7u7uSi/hmDAYjgs7PACHqa1tefT2\n9kZvb++Ad3k2blwfb7yxId54Y0Ofv/nuu7NTLbs8h3pMg83Mmdf0eZkja7AcFxXf4dm1a1d0de2J\nW26ZXeml9FttbU309PQO+H4dHTui0JifuKKnKzo6OqvqmIo4/OPqWPNxvv7q64ce0bXs3d3Ze3kg\nuzx7f+Pde7ladkQ+SrU9pn13d+z0fHIGy3Hhpy8AkF7Fd3gaGhqioaEhliy5p9JL6beTTz4h3nnn\n/QHf75ZbZseO9z74BFbEvkq19TFyxPFVdUxFHP5xdaz5OF9/R9qFF06KF174v/LlgWhqmhaLF7eW\nL2dQbY9pyJAh5Z2dIUOGVHg1eQ2W48IOD8Bhmj59RtTU1ERNTc2A/2h5/PiJMW7chBg3bkKfW/zL\nl6/o8/JgdqjHNNgsW/arPi9zZA2W46LiOzwA1WygOzv7qoZdkIGqtsdkZ+foGAzHheAB+BgO57+j\n73Wo33arZWdnX9Wws7OvZct+5XTyUTAYjguntACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4A\nID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDS\nEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3B\nAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwA\nQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCk\nJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqC\nBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gA\ngPQEDwCQXl2lF3DWWedUegnAMcD3Gji2VTx4rrzyW5VeAnAM8L0Gjm1OaQEA6QkeACA9wQMApCd4\nAID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcA\nSE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0\nBA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/w\nAADpCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8A\nkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADp\nCR4AID3BAwCkJ3gAgPQEDwCQnuABANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7g\nAQDSEzwAQHqCBwBIT/AAAOkJHgAgPcEDAKQneACA9OoqvYBjTdG9O3ZufrrSy+i3ont3REQVrvn4\nSi8DgEFE8BxFI0eeVOklDNiuXUVERDQ0HF5A1NbWRE9P75FcUj8cX5WzBuCTI3iOonnzFlR6CUfd\nySefEO+8836llwHAMc7f8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJ\nHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AID3BAwCkJ3gAgPQEDwCQnuAB\nANITPABAeoIHAEhP8AAA6QkeACA9wQMApCd4AID0BA8AkJ7gAQDSEzwAQHqCBwBIT/AAAOkJHgAg\nPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASE/wAADpCR4AIL1SURRFpRcBAPBJssMDAKQneACA\n9AQPAJCe4AEA0hM8AEB6ggcASK+u0guoFq+//nosXbo02tra4s0334w5c+ZEqVSKz3zmM3H77bdH\nTY127O7ujnnz5sXbb78dXV1dccMNN8Tpp59uVv+jp6cnfvSjH8WWLVuiVCrFHXfcEUOHDjWnj7B9\n+/a47LLLYvny5VFXV2dWB/H1r389hg8fHhERo0aNipaWFrPqw7Jly2LlypXR3d0dV111VZx99tnm\n1If29vb49a9/HRERe/bsiQ0bNsSKFSti4cKF1TmrgkO6//77i8mTJxdXXHFFURRFMXPmzGL16tVF\nURTF/Pnzi9///veVXN6g8cQTTxStra1FURRFR0dHceGFF5pVH/7whz8Uc+bMKYqiKFavXl20tLSY\n00fo6uoqbrzxxuKiiy4qNm/ebFYH0dnZWTQ1Ne13nVkdaPXq1cXMmTOLnp6eYufOncU999xjTv2w\nYMGC4tFHH63qWVVJllXW6NGj49577y2//de//jXOPvvsiIi44IIL4uWXX67U0gaVSy65JL7zne9E\nRERRFFFbW2tWffjqV78ad955Z0REbN26NUaMGGFOH2HRokXxzW9+M0455ZSI8PV3MBs3bozdu3fH\njBkzorm5OV577TWz6sOqVavis5/9bNx0003R0tISX/nKV8zpENauXRubN2+Ob3zjG1U9K8HTDxdf\nfHHU1f337F9RFFEqlSIioqGhId5///1KLW1QaWhoiOHDh8fOnTtj9uzZ8d3vftesDqKuri5uvfXW\nuPPOO2PKlCnmdBDt7e1x0kknxZe//OXydWbVt+OOOy6uu+66ePDBB+OOO+6Im2++2az60NHREevW\nrYuf/exn5tRPy5Yti5tuuikiqvvrT/Achn3PV+7atStGjBhRwdUMLv/85z+jubk5mpqaYsqUKWb1\nERYtWhTPP/98zJ8/P/bs2VO+3pz+68knn4yXX345pk+fHhs2bIhbb701duzYUb7drP7r1FNPjalT\np0apVIpTTz01TjzxxNi+fXv5drP60Iknnhhf+tKXor6+PsaOHRtDhw7d74e2Oe3vvffeiy1btsS5\n554bEdX980/wHIaJEyfGmjVrIiLiT3/6U5x55pkVXtHg8O6778aMGTPilltuicsvvzwizKovv/nN\nb2LZsmURETFs2LAolUrR2NhoTn145JFH4uGHH462traYMGFCLFq0KC644AKz6sMTTzwRP/nJTyIi\nYtu2bbFz5844//zzzep/fPGLX4yXXnopiqKIbdu2xe7du+O8884zp4N49dVX47zzziu/Xc3f0714\naD+99dZb8f3vfz8ef/zx2LJlS8yfPz+6u7tj7Nix0draGrW1tZVeYsW1trbGc889F2PHji1f98Mf\n/jBaW1vNah8ffPBBzJ07N9599934z3/+E9dff32cdtppjqlDmD59eixYsCBqamrMqg9dXV0xd+7c\n2Lp1a5RKpbj55ptj5MiRZtWHxYsXx5o1a6Ioivje974Xo0aNMqeDeOCBB6Kuri6uvfbaiIiq/vkn\neACA9JzSAgDSEzwAQHqCBwBIT/AAAOkJHgAgPS8eCsRbb70Vl1xySZx22mkREdHZ2Rnjxo2L2267\nLTo7O6O5uTlWrly5333GjRsXb7zxRqxZsyZaWlpi9OjRERHR29sbu3btiuuvvz6uuuqq8vu/8MIL\n0dLSEk8++WQ0NjZGxIdPLPjQQw9FRMTf//73GD16dAwZMiS+8IUvxO23317+HBEfPsnZ0qVLY9Wq\nVTFs2LAYPnx4zJo1q/wcIXPmzIl//OMf8fDDD5efCba9vT1eeeWV8vPTAMcuwQNERMQpp5wSTz31\nVER8+PTxP/3pT2P27NmxePHiQ963sbEx2traym9v2LAhLr/88pgyZUr51bvb29vj4osvjkcffTRa\nW1sjImLatGkxbdq0iIiYNGlS3H///TFq1KgDPn5RFNHS0hITJkyI3/72t1FfXx/r16+Pb3/723H3\n3XfHOeecExERr7/+ejz00ENxzTXXfLxhAOk4pQUcoFQqxaxZs2LTpk2xc+fOAd//7bffjmHDhkV9\nfX1EROzYsSP+/Oc/xw9+8IP43e9+N+CP+corr8TWrVtj7ty55Y85ceLEuOGGG+KXv/xl+f2uu+66\nuO++++LNN98c8JqB3AQP0Kf6+voYM2ZMvPTSS4d833Xr1kVTU1NcdNFFcc4558TTTz8dy5cvL8fJ\nM888E+eff36MGjUqGhsbyztJ/bV27dpobGwsn6ra66yzzoq1a9eW3x4zZky0tLTEvHnzwnOqAvsS\nPMBBlUql+PSnP33A9fu+YnJElCPm2WefjXPPPTeOO+64+PznP1++vb29PSZPnhwREZdeemk89thj\nA15HT0/PAdd3d3cfcF1zc3MURVH+2yCACMEDHERXV1ds2bIlJkyYsN+rSUdEbN++PT71qU8dcJ/6\n+vpobW2NVatWxbPPPhsREevXr4+//e1vcdddd8WkSZPiF7/4RWzatCn+8pe/9HstZ5xxRqxbt+6A\nwHnttdfic5/73H7X1dTUxI9//GOntoD9CB7gAL29vXHvvffGGWecEePHj48xY8bE888/X779scce\n2+8VlPd1wgknxKxZs2Lp0qXR2dkZ7e3tceWVV8Yf//jHWLlyZbz44ovR1NQ0oF2eM888M04//fRY\nuHBhOXrWrVsX9913X9x4440HvP/eU1sPPvjgAB85kJXgASIi4l//+lc0NTWV/23bti3uvvvuiIhY\nsmRJrFixIqZOnRpf+9rXYtOmTXHbbbcd9GNdccUVMWzYsHjggQfimWeeiauvvnq/26+99tp47rnn\n4t///ne/1/fzn/886uvrY/LkyXHppZfGXXfdFUuWLCn/D63/1dzcvN9pNeDY5tXSAYD07PAAAOkJ\nHgAgPcEDAKQneACA9AQPAJCe4AEA0hM8AEB6ggcASO//AeYTIU/genbrAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a2e1358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nb2+XcwGw4/keJgAUEEwAKCCYAFBAMAGggGACQAHBBIACggkABQQTAAoIJgAUEEwAKCCYAFBAMAGg\ngGACQAHBBIACggkABQQTAAoIJgAUEEwAKCCYAFBAMAGggGACQAHBBIACggkABQQTAAoIJgAUEEwA\nKCCYAFBAMAGgQENVVdWOngQA7Ox8wgSAAoIJAAUEEwAKCCYAFBBMACggmABQoE89B9u4cWOuuOKK\nPP300+nXr19mzJiRAw44oJ6n2KbWr1+fadOm5ZVXXsm6dety3nnnZb/99suUKVPyyU9+Mklyxhln\nZMKECZk9e3ZuvfXW9OnTJ+edd16OPfbYrFmzJhdddFFWrFiRpqamXHnlldlnn3127KI6+NrXvpYB\nAwYkST7xiU9k6tSpueSSS9LQ0JCDDjool19+eXbbbbdeub65c+fmjjvuSJKsXbs2Tz31VG677bZe\nf/3++c9/5he/+EVmzZqVF198cauv16JFi/Kzn/0sjY2NGTt2bL7//e/vNOt76qmnMn369DQ2NqZf\nv3658sors++++2bGjBl59NFH09TUlCS57rrr0rdv3163viVLlmz1+3FnXt+FF16YN954I0nyyiuv\n5LOf/Wx+9atf9err105VR/Pnz68uvvjiqqqq6rHHHqumTp1az+G3udtvv72aMWNGVVVVtXLlyuqY\nY46pZs+eXd14443tjnv99deriRMnVmvXrq1WrVpV+/qmm26qrrnmmqqqququu+6qpk+fvt3XsClr\n1qypmpub222bMmVK9eCDD1ZVVVWXXXZZtWDBgl67vrauuOKK6tZbb+311+/666+vJk6cWJ166qlV\nVdXnep188snViy++WG3cuLH61re+VT355JM7ZnFV5/WdddZZ1ZIlS6qqqqpbbrmlmjlzZlVVVXX6\n6adXK1asaPfc3ri+erwfd+b1tXrrrbeqk08+uXrttdeqquq916+jut6SfeSRR3LUUUclST73uc/l\niSeeqOfw29wJJ5yQH/zgB0mSqqrS2NiYJ554Ivfee2/OOuusTJs2LS0tLVm8eHE+//nPp1+/fhk4\ncGCGDBmSpUuXtlv/0UcfnQceeGBHLqeTpUuX5t13380555yTyZMnZ9GiRXnyySfzhS98Icn7c77/\n/vt77fpaPf7443n22Wdz2mmn9frrN2TIkFx77bW1x1t7vVpaWrJu3boMGTIkDQ0NGTt2bO6///4d\nsrak8/quvvrqfPrTn06SbNiwIf3798/GjRvz4osv5ic/+UlOP/303H777UnSK9e3te/HnX19ra69\n9tqcffbZGTx4cK++fh3V9ZZsS0tL7XZfkjQ2Nua9995Lnz51Pc0203q7oKWlJeeff34uuOCCrFu3\nLqeeempGjBiR3/zmN/n1r3+d4cOHZ+DAge2e19LSkpaWltr2pqamvP322ztkHd3Zfffdc+655+bU\nU0/NCy+8kG9/+9upqioNDQ1JPphz23W0bu8N62v129/+Nt/73veSJCNHjuzV12/8+PFZtmxZ7fHW\nXq+O/0abmpry8ssvb6fVdNZxfYMHD06SPProo7n55pvz+9//Pu+8807OPvvsfPOb38yGDRsyefLk\njBgxoleub2vfjzv7+pJkxYoVeeCBB3LppZcmSa++fh3V9RPmgAEDsnr16trjjRs39ppYtvr3v/+d\nyZMnp7m5OV/96ldz/PHHZ8SIEUmS448/PkuWLOm0ztWrV2fgwIHttq9evTp77bXXDllDd4YOHZqT\nTz45DQ0NGTp0aD760Y9mxYoVtf2tc+6t60uSVatW5fnnn8+YMWOSZJe6fkmy224f/JPdkuvV1bE7\n2zrvvvvuXH755bn++uuzzz77ZI899sjkyZOzxx57ZMCAARkzZkyWLl3aK9e3te/HnX19SfLnP/85\nEydOTGNjY5LsUtevrsEcNWpUFi5cmCRZtGhRDj744HoOv8298cYbOeecc3LRRRfl61//epLk3HPP\nzeLFi5MkDzzwQA499NCMHDkyjzzySNauXZu33347//rXv3LwwQdn1KhR+dvf/pYkWbhwYQ477LAd\ntpau3H777fn5z3+eJHnttdfS0tKSL33pS3nooYeSvD/nww8/vNeuL0kefvjhHHHEEbXHu9L1S5JD\nDjlkq67XgAED0rdv37z00kupqir33XdfDj/88B25pHbmzZuXm2++ObNmzcr++++fJHnhhRdyxhln\nZMOGDVm/fn0effTRHHroob1yfVv7ftzZ15e8v66jjz669nhXun51/eXrrT8l+8wzz6SqqsycOTOf\n+tSn6jX8Njdjxozcc889OfDAA2vbLrjgglx11VXp27dv9t1330yfPj0DBgzI7Nmzc9ttt6WqqkyZ\nMiXjx4/Pu+++m4svvjjLly9P375988tf/jKDBg3agStqb926dbn00kvz6quvpqGhIT/60Y+y9957\n57LLLsv69etz4IEHZsaMGWlsbOyV60uSG264IX369Mk3vvGNJO9/z2/69Om9+votW7YsP/zhDzN7\n9uw8//zzW329Fi1alJkzZ2bDhg0ZO3ZsLrzwwp1ifbfcckuOOOKI7LfffrVPFaNHj87555+fG264\nIffcc0/69u2b5ubmnHHGGb1ufbNnz67L+3FnXl+SnHTSSbnlllvafTLszdevLX+tBAAK+MUFAFBA\nMAGggGACQAHBBIACggkABQQT6uCZZ57JsGHDMn/+/Nq2SZMmZdSoUVm3bl27Y5ubmzNp0qTa48WL\nF2fy5MkZP358TjrppFx66aV58803a/uHDRvW6XzHHXdcli1blmXLlmXYsGH5+9//3uX+n/70p2lu\nbs6ECRMyYsSINDc3p7m5OXPmzKnX0uFDQzChDubOnZvx48fn1ltvbbd94MCBue+++2qPn3vuubz+\n+uu1x88++2y++93vZurUqZk/f37+9Kc/ZejQoZk8eXLWrl1bdO6+ffvmsssuS0tLS6d9l19+eebN\nm5frr78+gwcPzrx58zJv3ryccsopW7hS+PASTNhK7733Xu68885ceOGFWbJkSV566aXavnHjxrX7\n1Hn33Xdn/Pjxtcc33HBDTjvttBx55JFJ3v/Vd9/5zney++6755577ik6/+DBg3PkkUfmyiuvrNOK\ngK4IJmyle++9Nx//+MczdOjQfOUrX2n3KfOoo47KP/7xj6xfv7527LHHHlvb//jjj2fkyJGdxhw9\nenSP/trPJZdckvvuu6/TrVmgfgQTttLcuXMzceLEJMmECRNyxx131L5v2b9//xx22GG5//7788wz\nz2T//ffP7rvvXntuQ0ND3nvvvU5jtga29ZiOqqpq94vYBwwYkOnTp3d7axbYer3rT4nATmbFihVZ\nuHBhnnjiifzud79LVVVZtWpVFixYUDvmhBNOyPz58/Oxj30sEyZMaPf8kSNHZtGiRfnyl7/cbvtj\njz1W+8Ggj3zkI1m1alW73825cuXK7LXXXnnrrbdq28aOHevWLGxDPmHCVrjzzjszZsyYLFy4MH/5\ny1/y17/+NVOnTs1tt91WO+boo4/OQw89lIULF7b7Kw5JMmXKlMyZM6d2K7Wqqlx33XVZs2ZNTjzx\nxCTJmDFjan90N0n++Mc/5qCDDmr3dwNbtd6abfuDRUB9CCZshblz5+bMM89st+3MM8/M4sWL89xz\nzyVJ+vXrl1GjRuXAAw9M//792x17wAEH5MYbb8xNN92UE088MePHj8/LL7+cWbNm1Y798Y9/nEce\neSQTJ07MSSedlLvuuitXX311l/NpvTXb9pYuUB/+WgkAFPAJEwAKCCYAFBBMACggmABQQDABoIBg\nAkABwQSAAoIJAAX+P3vbMGzzpWxeAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a490c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAFXCAYAAAAven4GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADwlJREFUeJzt3W+s1nX9x/HX+SOGmAM3WWuuDdQEZ8tV+NNV2pxTcyHL\n0mwM13ROiM1/k6kkixZzYa0bZC2a80ZIIyen4EYtbFZWBrM5Nk2wsdHKaAaHUwgC5wjf3w07JzzK\n8Y3hdZ3DeTw2tovre67z/Zw3nOt5Pte5znU6mqZpAgCMqLPdCwCAsUAwAaBAMAGgQDABoEAwAaBA\nMAGgoHukgzt3vtKqdSRJpkw5JX19r7b0nGOJ+bw9MxqZ+bw9MxrZeJjPGWe89y2vH1U7zO7urnYv\nYVQzn7dnRiMzn7dnRiMbz/MZVcEEgNFKMAGgQDABoEAwAaBAMAGgQDABoEAwAaBAMAGgQDABoEAw\nAaBAMAGgQDABoEAwAaBAMAGgQDABoEAwAaBAMAGgQDABoEAwAaBAMAGgQDABoEAwAaBAMAGgQDAB\noEAwAaBAMAGgQDABoKC73Qs4ETzwwNL09e1+18/T1dWZQ4cOH9f3uW/fviTJpEmTjuv7bZd3OqMp\nU07P4sVLj/+CgBOGYB4HfX2709vbm46TJrZ7KcesGTiQJDl4qKPNK2mfZmB/u5cAjAGCeZx0nDQx\np559TbuXccz2blufJGNy7cfL4AwARuJ7mABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCY\nAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgA\nUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQ\nIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAg\nmABQIJgAUCCYAFAgmABQIJgAUCCYAFDQsmA+9tjqPPbY6ladDmDMc785urQsmM88synPPLOpVacD\nGPPcb44uHpIFgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEE\ngALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSA\nAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIAC\nwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEgALBBIACwQSAAsEEGINW\nrPhWVqz41lseW7Xqkaxa9chRb7thw8+yYcPPjvmcW7e+kOeee+6Yb/e/2Lr1hWzd+sIxH3s3dLfs\nTAAcN5s3P3vUY7/5zZNJknnzbnrL4+vW9SRJrrji6mM657p1a3PSSV25667Fx3S7/8W6dWuTJDNm\nnHdMx94NdpgAY8yRO8vhu8xVqx7J4cOHc/jw4bfcZW7Y8LPs3/9q9u9/9Zh2mVu3vpAXX9yS559/\nvmW7usFzvvjiljedc6Rj75aW7TD37duX/v6DWbTotqO+TVdXZw4dOtyqJR03fX270/jaY8xqDvWn\nr+/AiP83TxRj9XOslUbTjPr6dmfChJPfdP2Ru8vhO83B3eXg5eG7zMHd5eDl6i5zcDc3eLkVu7qR\nztmO9biXB4CClu0wJ02alEmTJuWb31xx1Lc544z3ZufOV1q1pONm0aLbsnvPq+1eBu9QR9eETDnt\nlBH/b54oxurnWCuNphkd7VGPCy74yNDO8oILPvKGY5deell+9atfDl0ebs6ca7NmzaNDl6vmzPlc\nHnxw2dDlVhjpnO1Yjx0mwBhz2213v+Xl5PUn+nR2dqazs/Mtn/RzxRVXZ+LEUzJx4inH9KSfGTPO\ny7nnzsz555/fsifZDJ7z3HNnvumcIx17t3iWLMAYNHxneaS32lke6Vh2lm+83ecyefIp7+i279RI\nu8dW7SwHCSbAGDR8Z3mko/04yaBj/XGSQTNmnNfyh6xH2j22amc5yEOyAFAgmABQIJgAUCCYAFAg\nmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCY\nAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgA\nUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQ\nIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFDQ3aoTzZr1f606FcAJwf3m6NKyYF5//dxW\nnQrghOB+c3TxkCwAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAU\nCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQI\nJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgm\nABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYAFAgmABQIJgAUCCYA\nFAgmABQIJgAUdLd7ASeKZmB/9m5b3+5lHLNmYH+SjMm1Hy+vz+CUdi8DGOUE8ziYMuX0lpynq6sz\nhw4dPq7vc9++JkkyadKJEYx3NqNTWvZvCIxdgnkcLF68tCXnOeOM92bnzldacq6xyoyAd4vvYQJA\ngWACQIFgAkCBYAJAgWACQIFgAkCBYAJAgWACQIFgAkCBYAJAgWACQIFgAkCBYAJAgWACQIFgAkCB\nYAJAgWACQIFgAkCBYAJAgWACQIFgAkCBYAJAgWACQIFgAkCBYAJAgWACQIFgAkCBYAJAQUfTNE27\nFwEAo50dJgAUCCYAFAgmABQIJgAUCCYAFAgmABR0t+OkAwMDWbx4cf7+97+nv78/CxYsyNlnn517\n7703HR0dOeecc/LVr341nZ3jt+eHDh3K/fffn+3bt6ejoyNf+9rXcvLJJ5vRML29vbn22mvzyCOP\npLu723yG+exnP5tTTz01SXLmmWdm/vz5ZnSElStX5sknn8zAwEC++MUv5sILLzSfI/T09OQnP/lJ\nkuTgwYPZsmVLfvSjH+WBBx4YnzNq2uDxxx9vli1b1jRN0/T19TWXXnppc+uttzYbN25smqZplixZ\n0mzYsKEdSxs1nnjiiebee+9tmqZpNm7c2MyfP9+Mhunv72++/OUvN1dccUWzbds28xnmwIEDzZw5\nc95wnRn918aNG5tbb721OXToULN3795mxYoV5jOCpUuXNmvWrBnXM2rLlwVXXXVVbr/99sFgp6ur\nK3/6059y4YUXJkkuueSSPP300+1Y2qhx+eWX5+tf/3qSZMeOHTnttNPMaJjly5fnhhtuyNSpU5PE\nfIbZunVr9u/fn5tuuik33nhjNm/ebEZH+N3vfpcPfvCDWbhwYebPn59PfepT5nMUzz33XLZt25Yv\nfOEL43pGbXlIdtKkSUmSvXv35rbbbssdd9yR5cuXp6OjY+j4K6+80o6ljSrd3d2555578sQTT2TF\nihX5/e9/b0b/0dPTk9NPPz2f/OQn84Mf/CDJ6198mc9/vec978nNN9+c6667Ln/5y19yyy23mNER\n+vr6smPHjnz/+9/PSy+9lAULFpjPUaxcuTILFy5MMr4/z9r2wPM//vGP3HjjjZkzZ05mz579hsfA\n9+3bl9NOO61dSxtVli9fnl/84hdZsmRJDh48OHT9eJ/R2rVr8/TTT2fevHnZsmVL7rnnnuzevXvo\n+HifT5JMmzYt11xzTTo6OjJt2rRMnjw5vb29Q8fH+4wmT56cT3ziE5kwYUKmT5+ek08++Q13/uN9\nPoP27NmT7du356KLLkqScX1f3ZZg7tq1KzfddFMWLVqUz3/+80mS8847L5s2bUqSPPXUU/nYxz7W\njqWNGj/96U+zcuXKJMnEiRPT0dGR888/34z+Y/Xq1Xn00UezatWqzJw5M8uXL88ll1xiPkd4/PHH\n841vfCNJ8vLLL2fv3r35+Mc/bkb/8dGPfjS//e1v0zRNXn755ezfvz8XX3yx+QzzzDPP5OKLLx76\n+3i+r27Li68vW7YsP//5zzN9+vSh677yla9k2bJlGRgYyPTp07Ns2bJ0dXW1emmjxquvvpr77rsv\nu3btymuvvZZbbrklZ511VpYsWWJGw8ybNy9Lly5NZ2en+Ryhv78/9913X3bs2JGOjo7cfffdmTJl\nihkd4cEHH8ymTZvSNE3uvPPOnHnmmeYzzMMPP5zu7u586UtfSpJs37593M7IbysBgIJx8sMzAPC/\nEUwAKBBMACgQTAAoEEwAKGjLK/3AePfnP/85s2fPzooVK3LllVcOXf+HP/wh3/3ud7Nz584cPnw4\nM2fOzOLFi/O+970vL730Uq666qqcddZZb3hf119/febOndvqDwHGHcGENujp6cmVV16ZNWvWDAXz\nj3/8YxYtWpSHHnooF1xwQZLXX6Bh4cKFWbt2bZJk6tSpWbduXdvWDeOZYEKLvfbaa1m/fn1Wr16d\nG264IX/961/zgQ98IN/73veyYMGCoVgmydy5c3PgwIH09/e3ccVA4nuY0HK//vWv8/73vz/Tpk3L\n5ZdfnjVr1iRJNm/enFmzZr3p7W+++eZMmDAhSfLPf/4zc+bMecOfF198saXrh/HKDhNarKenJ5/5\nzGeSJFdffXXuvvvu3HHHHUky9Fsg+vv7c9111yVJ/v3vf+fb3/52pk6d6iFZaCPBhBbq7e3NU089\nleeffz4//OEP0zRN9uzZkw0bNuRDH/pQnn322ZxzzjmZMGHCUBjnzZuXgYGBNq8cEExoofXr1+ei\niy7Kww8/PHTdd77znfz4xz/O7bffnrvuuiszZszIhz/84SSv/xLov/3tb+Pmxa1hNPPi69BCs2fP\nzp133pnLLrts6Lre3t5cdtll6enpyb/+9a889NBD2bVrV5qmyeTJkzN37tx8+tOfPuqPlcyaNSv3\n339/qz8UGHcEEwAKPEsWAAoEEwAKBBMACgQTAAoEEwAKBBMACgQTAAoEEwAK/h+yTLLLWUPMpwAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117f2c278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#提取连续型变量\n",
    "train_x_con=train_x_desc.loc[train_x_desc['nunique']>5]\n",
    "train_x_con_p=train_x.loc[:,[var for var in train_x_con.index]]\n",
    "\n",
    "##查看连续型变量是否有极值\n",
    "for var in train_x_con_p.columns:\n",
    "    sns.boxplot(train_x_con_p[var])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#plot_N_var(sample, 'AGE',qs=[-np.inf, 25,35,45,55, np.inf])\n",
    "#plot_N_var(sample, 'AMOUNT',qs=[-np.inf, 1365.5, 2319.5, 3972.25, np.inf])\n",
    "#plot_N_var(sample, 'DURATION',qs=[-np.inf, 12,18,24, np.inf])\n",
    "\n",
    "#x = pd.to_numeric(sample['DURATION'], errors='coerce').values\n",
    "#print(list(np.percentile(x[pd.notnull(x)], [25,50,75])))       \n",
    "#plot_N_var(sample, 'DURATION',qs=[-np.inf, 12,18,24, np.inf])\n",
    "\n",
    "\n",
    "##查看变量之间的相关性\n",
    "writer = ExcelWriter(r\"/Users/caijian271/corr.xlsx\")\n",
    "train_x_con_p.corr().to_excel(writer,'Sheet1')\n",
    "train_x_dis_p_result.to_excel(writer,'Sheet2')\n",
    "writer.save()\n",
    "#sns.heatmap(sample.corr()) \n",
    "\n",
    "#sns.plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 308,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['CHK_ACCT', 'HISTORY', 'NEW_CAR', 'USED_CAR', 'FURNITURE', 'RADIO/TV', 'EDUCATION', 'RETRAINING', 'SAV_ACCT', 'EMPLOYMENT', 'INSTALL_RATE', 'MALE_DIV', 'MALE_SINGLE', 'MALE_MAR_or_WID', 'CO-APPLICANT', 'GUARANTOR', 'PRESENT_RESIDENT', 'REAL_ESTATE', 'PROP_UNKN_NONE', 'OTHER_INSTALL', 'RENT', 'OWN_RES', 'NUM_CREDITS', 'JOB', 'NUM_DEPENDENTS', 'TELEPHONE', 'FOREIGN']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "27"
      ]
     },
     "execution_count": 308,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp_columns=np.array(train_x.columns)\n",
    "\n",
    "column_1=list(tmp_columns)\n",
    "\n",
    "column_1.remove(\"DURATION\")\n",
    "column_1.remove(\"AMOUNT\")\n",
    "column_1.remove(\"AGE\")\n",
    "print(column_1)\n",
    "\n",
    "len(column_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 309,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, 2]', '(2, 3]', '(3, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]      91.0    185 -0.348744  0.028479\n",
      "(0, 1]        107.0    177 -0.142568  0.005027\n",
      "(1, 2]         39.0     49  0.132494  0.001379\n",
      "(2, 3]        228.0    256  0.244921  0.026088\n",
      "(3, inf]        NaN      0       NaN       NaN\n",
      "IV of CHK_ACCT : 0.06097274366685848\n",
      "Index(['missing', '(-inf, 0]', '(0, 2]', '(2, 4]', '(4, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]       9.0     22 -0.533065  0.007265\n",
      "(0, 2]        254.0    389 -0.065492  0.002421\n",
      "(2, 4]        202.0    256  0.123843  0.006267\n",
      "(4, inf]        NaN      0       NaN       NaN\n",
      "IV of HISTORY : 0.015952858682493652\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     373.0    511  0.045961  0.001656\n",
      "(0, 1]         92.0    156 -0.167315  0.006029\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of NEW_CAR : 0.00768511059871172\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     407.0    597 -0.022351  0.000442\n",
      "(0, 1]         58.0     70  0.172700  0.003417\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of USED_CAR : 0.0038588357737234812\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     384.0    547  0.006946  0.000040\n",
      "(0, 1]         81.0    120 -0.032290  0.000185\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of FURNITURE : 0.00022429439397140386\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     310.0    474 -0.063882  0.002809\n",
      "(0, 1]        155.0    193  0.141488  0.006222\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of RADIO/TV : 0.009031762017122243\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     445.0    634  0.006778  0.000044\n",
      "(0, inf]       20.0     33 -0.140023  0.000905\n",
      "IV of EDUCATION : 0.0009489940009389327\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     427.0    609  0.005718  0.000030\n",
      "(0, inf]       38.0     58 -0.062104  0.000325\n",
      "IV of RETRAINING : 0.00035512532912301365\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, 3]', '(3, 4]', '(4, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     261.0    411 -0.093320  0.005123\n",
      "(0, 1]         40.0     65 -0.124755  0.001426\n",
      "(1, 3]         61.0     69  0.237520  0.006588\n",
      "(3, 4]        103.0    122  0.191461  0.007390\n",
      "(4, inf]        NaN      0       NaN       NaN\n",
      "IV of SAV_ACCT : 0.02052662245059903\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, 2]', '(2, 3]', '(3, 4]',\n",
      "       '(4, inf]'],\n",
      "      dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]      25.0     44 -0.204561  0.002496\n",
      "(0, 1]         63.0    109 -0.187461  0.005237\n",
      "(1, 2]        166.0    234  0.017419  0.000107\n",
      "(2, 3]         89.0    119  0.070266  0.000913\n",
      "(3, 4]        122.0    161  0.083369  0.001750\n",
      "(4, inf]        NaN      0       NaN       NaN\n",
      "IV of EMPLOYMENT : 0.010502516689132983\n",
      "Index(['missing', '(-inf, 1]', '(1, 2]', '(2, 3]', '(3, 4]', '(4, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 1]      68.0     92  0.058472  0.000486\n",
      "(1, 2]        113.0    158  0.025545  0.000157\n",
      "(2, 3]         78.0    110  0.016981  0.000048\n",
      "(3, 4]        206.0    307 -0.038219  0.000660\n",
      "(4, inf]        NaN      0       NaN       NaN\n",
      "IV of INSTALL_RATE : 0.0013497978516960347\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     447.0    634  0.011262  0.000121\n",
      "(0, inf]       18.0     33 -0.245383  0.002642\n",
      "IV of MALE_DIV : 0.0027629383265467045\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     200.0    303 -0.054663  0.001321\n",
      "(0, 1]        265.0    364  0.043329  0.001047\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of MALE_SINGLE : 0.002367995108395968\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     418.0    604 -0.007340  0.000049\n",
      "(0, inf]       47.0     63  0.067766  0.000449\n",
      "IV of MALE_MAR_or_WID : 0.0004973867455192163\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     451.0    641  0.009191  0.000082\n",
      "(0, inf]       14.0     26 -0.258287  0.002292\n",
      "IV of CO-APPLICANT : 0.0023733196446925364\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     438.0    634 -0.009077  0.000078\n",
      "(0, inf]       27.0     33  0.160082  0.001375\n",
      "IV of GUARANTOR : 0.0014529525710265734\n",
      "Index(['missing', '(-inf, 1]', '(1, 2]', '(2, 3]', '(3, 4]', '(4, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 1]      70.0     93  0.076648  0.000851\n",
      "(1, 2]        134.0    204 -0.059528  0.001052\n",
      "(2, 3]         63.0     90  0.004078  0.000002\n",
      "(3, 4]        198.0    280  0.014230  0.000086\n",
      "(4, inf]        NaN      0       NaN       NaN\n",
      "IV of PRESENT_RESIDENT : 0.001991373159287559\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     318.0    480 -0.050982  0.001824\n",
      "(0, 1]        147.0    187  0.120077  0.004295\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of REAL_ESTATE : 0.006118634613220231\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     407.0    563  0.036286  0.001132\n",
      "(0, 1]         58.0    104 -0.223195  0.006962\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of PROP_UNKN_NONE : 0.008093448461626854\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     393.0    542  0.039296  0.001280\n",
      "(0, 1]         72.0    125 -0.190895  0.006217\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of OTHER_INSTALL : 0.007496772907929616\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     397.0    558  0.020330  0.000349\n",
      "(0, 1]         68.0    109 -0.111088  0.001909\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of RENT : 0.002257980147886268\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     112.0    185 -0.141104  0.005150\n",
      "(0, 1]        353.0    482  0.049277  0.001799\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of OWN_RES : 0.006949112963373004\n",
      "Index(['missing', '(-inf, 1]', '(1, 2]', '(2, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 1]     288.0    424 -0.026020  0.000425\n",
      "(1, 2]        159.0    220  0.036029  0.000436\n",
      "(2, inf]       18.0     23  0.115630  0.000489\n",
      "IV of NUM_CREDITS : 0.0013495706755560172\n",
      "Index(['missing', '(-inf, 0]', '(0, 1]', '(1, 2]', '(2, 3]', '(3, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]       8.0     14 -0.198863  0.000753\n",
      "(0, 1]         96.0    134  0.027261  0.000151\n",
      "(1, 2]        303.0    430  0.010700  0.000074\n",
      "(2, 3]         58.0     89 -0.067441  0.000587\n",
      "(3, inf]        NaN      0       NaN       NaN\n",
      "IV of JOB : 0.0015651772256910202\n",
      "Index(['missing', '(-inf, 1]', '(1, 2]', '(2, inf]'], dtype='object')\n",
      "           response  total       woe            vi\n",
      "bins                                              \n",
      "missing         NaN      0       NaN           NaN\n",
      "(-inf, 1]     396.0    568  0.000045  1.757813e-09\n",
      "(1, 2]         69.0     99 -0.000261  1.008677e-08\n",
      "(2, inf]        NaN      0       NaN           NaN\n",
      "IV of NUM_DEPENDENTS : 1.1844583669179675e-08\n",
      "Index(['missing', '(-inf, 0]', '(0, 0.6]', '(0.6, 1]', '(1, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     267.0    400 -0.043463  0.001109\n",
      "(0, 0.6]        NaN      0       NaN       NaN\n",
      "(0.6, 1]      198.0    267  0.061771  0.001576\n",
      "(1, inf]        NaN      0       NaN       NaN\n",
      "IV of TELEPHONE : 0.0026841683635181342\n",
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n",
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     444.0    644 -0.011122  0.000119\n",
      "(0, inf]       21.0     23  0.269781  0.002881\n",
      "IV of FOREIGN : 0.0029996250283397777\n"
     ]
    }
   ],
   "source": [
    "iv_dict = {}\n",
    "qs_dict = {}\n",
    "woe_mapper_all = {}\n",
    "#无需调整分组\n",
    "for var in column_1:\n",
    "    #if os.path.exists('fig/{0}.png'.format(var)) is True:\n",
    "    #    continue\n",
    "    \n",
    "    qs, iv, woe_map, f = plot_N_var(train,var)\n",
    "    iv_dict[var] = iv\n",
    "    qs_dict[var] = qs\n",
    "    woe_mapper_all[var]=woe_map\n",
    "    f.savefig(r'/Users/caijian271/fig/{0}.png'.format(var.replace('/',\"|\")), type='png',dpi=150)\n",
    "    plt.close(\"all\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 1]', '(1, 2]', '(2, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 1]      97.0    155 -0.112253  0.002770\n",
      "(1, 2]        154.0    227 -0.031537  0.000333\n",
      "(2, inf]      216.0    285  0.079250  0.002793\n",
      "IV of EMPLOYMENT : 0.00589585413992941\n"
     ]
    }
   ],
   "source": [
    "#调整分组\n",
    "woe_mapper_all\n",
    "\n",
    "##Employment\n",
    "#           response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 0]      39.0     62 -0.106898  0.000672\n",
    "#(0, 1]        102.0    172 -0.165847  0.004359\n",
    "#(1, 2]        235.0    339 -0.009740  0.000032\n",
    "#(2, 3]        135.0    174  0.102894  0.001940\n",
    "#(3, 4]        189.0    253  0.065032  0.001106\n",
    "#(4, inf]        NaN      0       NaN       NaN\n",
    "#IV of EMPLOYMENT : 0.00810917701959445\n",
    "\n",
    "qs, iv, woe_map_EMPLOYMENT, f =plot_N_var(train, 'EMPLOYMENT',qs=[-np.inf, 1,2, np.inf])\n",
    "iv_dict['EMPLOYMENT'] = iv\n",
    "qs_dict['EMPLOYMENT'] = qs\n",
    "woe_mapper_all['EMPLOYMENT']=woe_map_EMPLOYMENT\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"EMPLOYMENT\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 3]', '(3, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 3]     266.0    359  0.056635  0.001776\n",
      "(3, inf]      201.0    308 -0.070334  0.002206\n",
      "IV of INSTALL_RATE : 0.0039820287727212215\n"
     ]
    }
   ],
   "source": [
    "#         response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 1]      71.0     95  0.065264  0.000627\n",
    "#(1, 2]        125.0    170  0.048976  0.000627\n",
    "#(2, 3]         70.0     94  0.061661  0.000553\n",
    "#(3, 4]        201.0    308 -0.070334  0.002206\n",
    "#(4, inf]        NaN      0       NaN       NaN\n",
    "#IV of INSTALL_RATE : 0.004011990216947864\n",
    "qs, iv, woe_map_INSTALL_RATE, f =plot_N_var(train, 'INSTALL_RATE',qs=[-np.inf, 3, np.inf])\n",
    "iv_dict['INSTALL_RATE'] = iv\n",
    "qs_dict['INSTALL_RATE'] = qs\n",
    "woe_mapper_all['INSTALL_RATE']=woe_map_INSTALL_RATE\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"INSTALL_RATE\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 2]', '(2, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 2]     401.0    568  0.008301  0.000059\n",
      "(2, inf]       66.0     99 -0.049004  0.000348\n",
      "IV of JOB : 0.00040676111519029735\n"
     ]
    }
   ],
   "source": [
    "#           response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 0]      10.0     14  0.019989  0.000008\n",
    "#(0, 1]         94.0    133  0.009406  0.000018\n",
    "#(1, 2]        297.0    421  0.007560  0.000036\n",
    "#(2, 3]         66.0     99 -0.049004  0.000348\n",
    "#(3, inf]        NaN      0       NaN       NaN\n",
    "#IV of JOB : 0.00041024973902445536\n",
    "qs, iv, woe_map_JOB, f =plot_N_var(train, 'JOB',qs=[-np.inf, 2, np.inf])\n",
    "iv_dict['JOB'] = iv\n",
    "qs_dict['JOB'] = qs\n",
    "woe_mapper_all['JOB']=woe_map_JOB\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"JOB\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 0]', '(0, 1.2]', '(1.2, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            response  total       woe        vi\n",
      "bins                                           \n",
      "missing          NaN      0       NaN       NaN\n",
      "(-inf, 0]      250.0    395 -0.100964  0.005742\n",
      "(0, 1.2]        51.0     72  0.011620  0.000015\n",
      "(1.2, inf]     166.0    200  0.170131  0.009461\n",
      "IV of SAV_ACCT : 0.015217737707424584\n"
     ]
    }
   ],
   "source": [
    "#           response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 0]     250.0    395 -0.100964  0.005742\n",
    "#(0, 1]         51.0     72  0.011620  0.000015\n",
    "#(1, 1.2]        NaN      0       NaN       NaN\n",
    "#(1.2, 3]       61.0     71  0.204655  0.004947\n",
    "#(3, 4]        105.0    129  0.150609  0.004735\n",
    "#(4, inf]        NaN      0       NaN       NaN\n",
    "#IV of SAV_ACCT : 0.015438607021493309\n",
    "qs, iv, woe_map_SAV_ACCT, f =plot_N_var(train, 'SAV_ACCT',qs=[-np.inf, 0,1.2, np.inf])\n",
    "iv_dict['SAV_ACCT'] = iv\n",
    "qs_dict['SAV_ACCT'] = qs\n",
    "woe_mapper_all['SAV_ACCT']=woe_map_SAV_ACCT\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"SAV_ACCT\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 1]', '(1, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 1]     286.0    417 -0.020634  0.000263\n",
      "(1, inf]      181.0    250  0.033497  0.000428\n",
      "IV of NUM_CREDITS : 0.0006911226254195653\n"
     ]
    }
   ],
   "source": [
    "#           response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 1]     286.0    417 -0.020634  0.000263\n",
    "#(1, 2]        165.0    228  0.033061  0.000380\n",
    "#(2, inf]       16.0     22  0.038007  0.000049\n",
    "#IV of NUM_CREDITS : 0.0006918726906578984\n",
    "qs, iv, woe_map_NUM_CREDITS, f =plot_N_var(train, 'NUM_CREDITS',qs=[-np.inf,1, np.inf])\n",
    "iv_dict['NUM_CREDITS'] = iv\n",
    "qs_dict['NUM_CREDITS'] = qs\n",
    "woe_mapper_all['NUM_CREDITS']=woe_map_NUM_CREDITS\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"NUM_CREDITS\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 0]', '(0, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           response  total       woe        vi\n",
      "bins                                          \n",
      "missing         NaN      0       NaN       NaN\n",
      "(-inf, 0]     121.0    200 -0.146066  0.005952\n",
      "(0, inf]      346.0    467  0.056570  0.002305\n",
      "IV of OWN_RES : 0.008257315804253682\n"
     ]
    }
   ],
   "source": [
    "#Index(['missing', '(-inf, 0]', '(0, 0.8]', '(0.8, 1]', '(1, inf]'], dtype='object')\n",
    "#           response  total       woe        vi\n",
    "#bins                                          \n",
    "#missing         NaN      0       NaN       NaN\n",
    "#(-inf, 0]     121.0    200 -0.146066  0.005952\n",
    "#(0, 0.8]        NaN      0       NaN       NaN\n",
    "#(0.8, 1]      346.0    467  0.056570  0.002305\n",
    "#(1, inf]        NaN      0       NaN       NaN\n",
    "#IV of OWN_RES : 0.008257315804253682\n",
    "qs, iv, woe_map_OWN_RES, f =plot_N_var(train, 'OWN_RES',qs=[-np.inf,0, np.inf])\n",
    "iv_dict['OWN_RES'] = iv\n",
    "qs_dict['OWN_RES'] = qs\n",
    "woe_mapper_all['OWN_RES']=woe_map_OWN_RES\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"OWN_RES\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 310,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['missing', '(-inf, 25]', '(25, 35]', '(35, 45]', '(45, inf]'], dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            response  total       woe        vi\n",
      "bins                                           \n",
      "missing          NaN      0       NaN       NaN\n",
      "(-inf, 25]      71.0    127 -0.220755  0.008326\n",
      "(25, 35]       187.0    269 -0.002850  0.000003\n",
      "(35, 45]       114.0    145  0.120217  0.003338\n",
      "(45, inf]       93.0    126  0.057070  0.000633\n",
      "IV of AGE : 0.01230098578444654\n",
      "Index(['missing', '(-inf, 1365.5]', '(1365.5, 3972.25]', '(3972.25, inf]'], dtype='object')\n",
      "                   response  total       woe        vi\n",
      "bins                                                  \n",
      "missing                 NaN      0       NaN       NaN\n",
      "(-inf, 1365.5]        112.0    165 -0.026694  0.000174\n",
      "(1365.5, 3972.25]     257.0    331  0.107710  0.006079\n",
      "(3972.25, inf]         96.0    171 -0.216563  0.010811\n",
      "IV of AMOUNT : 0.017063568628929666\n",
      "Index(['missing', '(-inf, 12]', '(12, 18]', '(18, 24]', '(24, inf]'], dtype='object')\n",
      "            response  total       woe        vi\n",
      "bins                                           \n",
      "missing          NaN      0       NaN       NaN\n",
      "(-inf, 12]     182.0    234  0.109438  0.004440\n",
      "(12, 18]        96.0    133  0.034752  0.000245\n",
      "(18, 24]       104.0    143  0.042299  0.000392\n",
      "(24, inf]       83.0    157 -0.276653  0.015738\n",
      "IV of DURATION : 0.02081525341178147\n"
     ]
    }
   ],
   "source": [
    "qs, iv, woe_map_age, f = plot_N_var(train,\"AGE\",qs=[-np.inf, 25,35,45, np.inf])\n",
    "iv_dict['AGE'] = iv\n",
    "qs_dict['AGE'] = qs\n",
    "woe_mapper_all['AGE']=woe_map_age\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"AGE\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")\n",
    "\n",
    "qs, iv, woe_map_amount, f = plot_N_var(train,\"AMOUNT\",qs=[-np.inf, 1365.5, 3972.25, np.inf])\n",
    "iv_dict['AMOUNT'] = iv\n",
    "qs_dict['AMOUNT'] = qs\n",
    "woe_mapper_all['AMOUNT']=woe_map_amount\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"AMOUNT\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")\n",
    "\n",
    "qs, iv, woe_map_duration, f = plot_N_var(train,\"DURATION\",qs=[-np.inf, 12,18,24, np.inf])\n",
    "iv_dict['DURATION'] = iv\n",
    "qs_dict['DURATION'] = qs\n",
    "woe_mapper_all['DURATION']=woe_map_duration\n",
    "f.savefig(r'/Users/caijian271/fig/{0}.png'.format(\"DURATION\".replace('/',\"|\")), type='png',dpi=150)\n",
    "plt.close(\"all\")\n",
    "\n",
    "\n",
    "with open('qs.json', 'w') as fp:\n",
    "    json.dump(qs_dict, fp)\n",
    "\n",
    "with open('iv.json', 'w') as fp:\n",
    "    json.dump(iv_dict, fp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "13\n",
      "{'CHK_ACCT': 1, 'HISTORY': 1, 'NEW_CAR': 1, 'USED_CAR': 0, 'FURNITURE': 0, 'RADIO/TV': 1, 'EDUCATION': 0, 'RETRAINING': 0, 'SAV_ACCT': 1, 'EMPLOYMENT': 1, 'INSTALL_RATE': 0, 'MALE_DIV': 0, 'MALE_SINGLE': 0, 'MALE_MAR_or_WID': 0, 'CO-APPLICANT': 0, 'GUARANTOR': 0, 'PRESENT_RESIDENT': 0, 'REAL_ESTATE': 1, 'PROP_UNKN_NONE': 1, 'OTHER_INSTALL': 1, 'RENT': 0, 'OWN_RES': 1, 'NUM_CREDITS': 0, 'JOB': 0, 'NUM_DEPENDENTS': 0, 'TELEPHONE': 0, 'FOREIGN': 0, 'AGE': 1, 'AMOUNT': 1, 'DURATION': 1}\n"
     ]
    }
   ],
   "source": [
    "#查看IV值大于某阈值的变量的个数\n",
    "print(len([col for col in iv_dict if iv_dict[col] >= 0.005]))\n",
    "    \n",
    "include = {}\n",
    "for col in iv_dict:\n",
    "    if iv_dict[col] > 0.005:\n",
    "        include[col] = 1\n",
    "    else:\n",
    "        include[col] = 0\n",
    "\n",
    "print(include)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 312,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('CHK_ACCT', 0.06097274366685848),\n",
       " ('DURATION', 0.02081525341178147),\n",
       " ('SAV_ACCT', 0.02052662245059903),\n",
       " ('AMOUNT', 0.017063568628929666),\n",
       " ('HISTORY', 0.015952858682493652),\n",
       " ('AGE', 0.01230098578444654),\n",
       " ('EMPLOYMENT', 0.010502516689132983),\n",
       " ('RADIO/TV', 0.009031762017122243),\n",
       " ('PROP_UNKN_NONE', 0.008093448461626854),\n",
       " ('NEW_CAR', 0.00768511059871172),\n",
       " ('OTHER_INSTALL', 0.007496772907929616),\n",
       " ('OWN_RES', 0.006949112963373004),\n",
       " ('REAL_ESTATE', 0.006118634613220231)]"
      ]
     },
     "execution_count": 312,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = [(col, iv_dict[col]) for col in include if include[col]==1]\n",
    "res.sort(key=lambda x: -x[1])\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 314,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'AGE': {'(-inf, 25]': -0.22075456908900834,\n",
       "  '(25, 35]': -0.0028501224189849909,\n",
       "  '(35, 45]': 0.12021734630218861,\n",
       "  '(45, inf]': 0.057070226530045363,\n",
       "  'missing': nan},\n",
       " 'AMOUNT': {'(-inf, 1365.5]': -0.026693962277218534,\n",
       "  '(1365.5, 3972.25]': 0.10771034984642433,\n",
       "  '(3972.25, inf]': -0.21656272470655621,\n",
       "  'missing': nan},\n",
       " 'CHK_ACCT': {'(-inf, 0]': -0.34874367823320729,\n",
       "  '(0, 1]': -0.14256825778365551,\n",
       "  '(1, 2]': 0.13249398834728723,\n",
       "  '(2, 3]': 0.24492082480314575,\n",
       "  '(3, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'CO-APPLICANT': {'(-inf, 0]': 0.0091905229102757884,\n",
       "  '(0, inf]': -0.25828656807795602,\n",
       "  'missing': nan},\n",
       " 'DURATION': {'(-inf, 12]': 0.1094382120473613,\n",
       "  '(12, 18]': 0.03475170357434984,\n",
       "  '(18, 24]': 0.042298909209732789,\n",
       "  '(24, inf]': -0.27665255722344267,\n",
       "  'missing': nan},\n",
       " 'EDUCATION': {'(-inf, 0]': 0.0067779680572818031,\n",
       "  '(0, inf]': -0.14002264758422173,\n",
       "  'missing': nan},\n",
       " 'EMPLOYMENT': {'(-inf, 0]': -0.20456116872179278,\n",
       "  '(0, 1]': -0.18746051550934353,\n",
       "  '(1, 2]': 0.017419313327109255,\n",
       "  '(2, 3]': 0.070265516948877893,\n",
       "  '(3, 4]': 0.083369320077060924,\n",
       "  '(4, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'FOREIGN': {'(-inf, 0]': -0.011121523343861449,\n",
       "  '(0, inf]': 0.26978086212254065,\n",
       "  'missing': nan},\n",
       " 'FURNITURE': {'(-inf, 0]': 0.0069463904940131457,\n",
       "  '(0, 1]': -0.032289947781339673,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'GUARANTOR': {'(-inf, 0]': -0.0090774037325122726,\n",
       "  '(0, inf]': 0.1600819448661164,\n",
       "  'missing': nan},\n",
       " 'HISTORY': {'(-inf, 0]': -0.53306523569382891,\n",
       "  '(0, 2]': -0.065492436271642251,\n",
       "  '(2, 4]': 0.1238428932499097,\n",
       "  '(4, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'INSTALL_RATE': {'(-inf, 1]': 0.058471768455333875,\n",
       "  '(1, 2]': 0.02554542601364124,\n",
       "  '(2, 3]': 0.016981101225442882,\n",
       "  '(3, 4]': -0.038218938469348686,\n",
       "  '(4, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'JOB': {'(-inf, 0]': -0.19886314760715529,\n",
       "  '(0, 1]': 0.027261031845192196,\n",
       "  '(1, 2]': 0.010700237150028626,\n",
       "  '(2, 3]': -0.067440718857452966,\n",
       "  '(3, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'MALE_DIV': {'(-inf, 0]': 0.011262280504610358,\n",
       "  '(0, inf]': -0.2453831632420482,\n",
       "  'missing': nan},\n",
       " 'MALE_MAR_or_WID': {'(-inf, 0]': -0.0073401250817911609,\n",
       "  '(0, inf]': 0.067765515646793298,\n",
       "  'missing': nan},\n",
       " 'MALE_SINGLE': {'(-inf, 0]': -0.054662798633065023,\n",
       "  '(0, 1]': 0.043328598677748867,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'NEW_CAR': {'(-inf, 0]': 0.045961469768378609,\n",
       "  '(0, 1]': -0.16731478987222922,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'NUM_CREDITS': {'(-inf, 1]': -0.026020334767744395,\n",
       "  '(1, 2]': 0.036029296196137546,\n",
       "  '(2, inf]': 0.11563018229528259,\n",
       "  'missing': nan},\n",
       " 'NUM_DEPENDENTS': {'(-inf, 1]': 4.5432861596523322e-05,\n",
       "  '(1, 2]': -0.0002607052090629755,\n",
       "  '(2, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'OTHER_INSTALL': {'(-inf, 0]': 0.039296250757882498,\n",
       "  '(0, 1]': -0.19089497795797841,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'OWN_RES': {'(-inf, 0]': -0.14110431345496277,\n",
       "  '(0, 1]': 0.049276583210963891,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'PRESENT_RESIDENT': {'(-inf, 1]': 0.076648389224370408,\n",
       "  '(1, 2]': -0.059527553565037521,\n",
       "  '(2, 3]': 0.0040776963895350852,\n",
       "  '(3, 4]': 0.014230067853553192,\n",
       "  '(4, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'PROP_UNKN_NONE': {'(-inf, 0]': 0.0362861976311721,\n",
       "  '(0, 1]': -0.2231952482666858,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'RADIO/TV': {'(-inf, 0]': -0.063882383887617106,\n",
       "  '(0, 1]': 0.14148756834262843,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'REAL_ESTATE': {'(-inf, 0]': -0.050982080793492354,\n",
       "  '(0, 1]': 0.12007661025241717,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'RENT': {'(-inf, 0]': 0.020329958634146876,\n",
       "  '(0, 1]': -0.11108753672476954,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'RETRAINING': {'(-inf, 0]': 0.0057183858469951228,\n",
       "  '(0, inf]': -0.062104210491766128,\n",
       "  'missing': nan},\n",
       " 'SAV_ACCT': {'(-inf, 0]': -0.093320166845273764,\n",
       "  '(0, 1]': -0.12475517545343334,\n",
       "  '(1, 3]': 0.2375199999043193,\n",
       "  '(3, 4]': 0.19146058382464679,\n",
       "  '(4, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'TELEPHONE': {'(-inf, 0]': -0.043463248379465025,\n",
       "  '(0, 0.6]': nan,\n",
       "  '(0.6, 1]': 0.06177101262255328,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan},\n",
       " 'USED_CAR': {'(-inf, 0]': -0.022351287621739612,\n",
       "  '(0, 1]': 0.17270040882532786,\n",
       "  '(1, inf]': nan,\n",
       "  'missing': nan}}"
      ]
     },
     "execution_count": 314,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##将原有的变量替换成woe值\n",
    "\n",
    "# print(woe_mapper_all['AGE'].keys())\n",
    "\n",
    "#q =[-np.inf, 25,35,45,55, np.inf]\n",
    "\n",
    "#bins = pd.cut(sample_x['AGE'].values, q, include_lowest=False)\n",
    "\n",
    "#bins = bins.set_categories(['missing']+list(bins.categories)).fillna('missing')\n",
    "#type(sample_x['AGE'].values)\n",
    "\n",
    "#type(bins.rename_categories([woe_mapper_all['AGE'][x] for x in bins.categories]))\n",
    "woe_mapper_all\n",
    "\n",
    "#qs_dict['AGE']\n",
    "#type(bins)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     woe#CHK_ACCT woe#HISTORY woe#NEW_CAR woe#RADIO/TV woe#SAV_ACCT  \\\n",
      "OBS#                                                                  \n",
      "206     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "642     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "468      0.244921    0.123843    0.045961     0.141488     0.191461   \n",
      "962     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "837      0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "425     -0.142568   -0.065492    0.045961    -0.063882     0.191461   \n",
      "236     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "286     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "452      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "87      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "601     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "533      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "745     -0.348744    0.123843    0.045961    -0.063882     0.191461   \n",
      "408     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "69       0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "842      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "231      0.132494   -0.065492    0.045961     0.141488    -0.093320   \n",
      "815     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "749      0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "786     -0.142568   -0.065492    0.045961    -0.063882     0.237520   \n",
      "282      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "924     -0.142568   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "368     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "937      0.132494   -0.065492    0.045961     0.141488    -0.093320   \n",
      "6        0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "572      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "222     -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "371      0.244921   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "387      0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "723     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "...           ...         ...         ...          ...          ...   \n",
      "241     -0.348744   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "959     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "648      0.244921   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "71       0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "165      0.244921   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "643      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "564     -0.142568   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "917      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "239      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "98      -0.142568   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "349      0.244921    0.123843    0.045961    -0.063882    -0.124755   \n",
      "984     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "781     -0.142568    0.123843    0.045961     0.141488    -0.093320   \n",
      "43      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "988      0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "263     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "519     -0.348744   -0.065492   -0.167315    -0.063882    -0.124755   \n",
      "928     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "730      0.132494    0.123843    0.045961    -0.063882     0.237520   \n",
      "188     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "480     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "296     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "224      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "649      0.132494   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "944      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "545      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "718      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "50       0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "363      0.132494    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "931     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "\n",
      "     woe#EMPLOYMENT woe#REAL_ESTATE woe#PROP_UNKN_NONE woe#OTHER_INSTALL  \\\n",
      "OBS#                                                                       \n",
      "206        0.083369       -0.050982          -0.223195          0.039296   \n",
      "642        0.083369       -0.050982           0.036286          0.039296   \n",
      "468        0.083369       -0.050982           0.036286         -0.190895   \n",
      "962        0.017419       -0.050982           0.036286          0.039296   \n",
      "837        0.017419       -0.050982           0.036286          0.039296   \n",
      "425        0.083369       -0.050982           0.036286         -0.190895   \n",
      "236       -0.204561       -0.050982           0.036286         -0.190895   \n",
      "286       -0.187461        0.120077           0.036286          0.039296   \n",
      "452        0.017419        0.120077           0.036286          0.039296   \n",
      "87        -0.187461       -0.050982           0.036286          0.039296   \n",
      "601       -0.187461        0.120077           0.036286          0.039296   \n",
      "533        0.017419        0.120077           0.036286          0.039296   \n",
      "745        0.070266       -0.050982           0.036286          0.039296   \n",
      "408       -0.187461        0.120077           0.036286          0.039296   \n",
      "69         0.017419       -0.050982          -0.223195         -0.190895   \n",
      "842        0.017419        0.120077           0.036286         -0.190895   \n",
      "231        0.017419       -0.050982           0.036286          0.039296   \n",
      "815        0.070266       -0.050982          -0.223195          0.039296   \n",
      "749        0.017419       -0.050982           0.036286          0.039296   \n",
      "786        0.017419       -0.050982           0.036286          0.039296   \n",
      "282        0.017419        0.120077           0.036286          0.039296   \n",
      "924        0.070266       -0.050982           0.036286          0.039296   \n",
      "368       -0.187461       -0.050982           0.036286          0.039296   \n",
      "937        0.017419        0.120077           0.036286          0.039296   \n",
      "6          0.017419       -0.050982          -0.223195          0.039296   \n",
      "572        0.070266       -0.050982           0.036286          0.039296   \n",
      "222        0.017419       -0.050982           0.036286         -0.190895   \n",
      "371        0.017419        0.120077           0.036286          0.039296   \n",
      "387       -0.187461        0.120077           0.036286          0.039296   \n",
      "723        0.017419        0.120077           0.036286          0.039296   \n",
      "...             ...             ...                ...               ...   \n",
      "241        0.083369       -0.050982           0.036286         -0.190895   \n",
      "959        0.017419       -0.050982           0.036286          0.039296   \n",
      "648        0.017419       -0.050982           0.036286          0.039296   \n",
      "71         0.017419       -0.050982           0.036286         -0.190895   \n",
      "165        0.083369       -0.050982           0.036286          0.039296   \n",
      "643        0.017419       -0.050982           0.036286          0.039296   \n",
      "564        0.017419       -0.050982          -0.223195          0.039296   \n",
      "917        0.017419        0.120077           0.036286          0.039296   \n",
      "239        0.017419       -0.050982           0.036286          0.039296   \n",
      "98         0.017419       -0.050982           0.036286          0.039296   \n",
      "349        0.017419        0.120077           0.036286          0.039296   \n",
      "984        0.017419       -0.050982           0.036286          0.039296   \n",
      "781        0.070266        0.120077           0.036286          0.039296   \n",
      "43         0.017419        0.120077           0.036286          0.039296   \n",
      "988       -0.204561        0.120077           0.036286          0.039296   \n",
      "263        0.083369       -0.050982          -0.223195          0.039296   \n",
      "519        0.083369       -0.050982           0.036286          0.039296   \n",
      "928        0.070266       -0.050982          -0.223195         -0.190895   \n",
      "730        0.017419        0.120077           0.036286          0.039296   \n",
      "188       -0.204561       -0.050982           0.036286          0.039296   \n",
      "480        0.083369       -0.050982           0.036286          0.039296   \n",
      "296       -0.187461       -0.050982           0.036286          0.039296   \n",
      "224        0.017419        0.120077           0.036286          0.039296   \n",
      "649        0.070266       -0.050982          -0.223195         -0.190895   \n",
      "944        0.070266        0.120077           0.036286          0.039296   \n",
      "545        0.083369        0.120077           0.036286          0.039296   \n",
      "718        0.017419       -0.050982          -0.223195          0.039296   \n",
      "50         0.017419        0.120077           0.036286          0.039296   \n",
      "363        0.017419       -0.050982           0.036286         -0.190895   \n",
      "931       -0.187461       -0.050982           0.036286          0.039296   \n",
      "\n",
      "     woe#OWN_RES   woe#AGE woe#AMOUNT woe#DURATION  RESPONSE  \n",
      "OBS#                                                          \n",
      "206    -0.141104  0.120217  -0.216563    -0.276653         1  \n",
      "642     0.049277  0.120217  -0.026694     0.034752         1  \n",
      "468     0.049277 -0.002850  -0.216563    -0.276653         1  \n",
      "962     0.049277  0.057070   0.107710     0.042299         1  \n",
      "837     0.049277 -0.220755  -0.026694     0.109438         1  \n",
      "425     0.049277 -0.220755   0.107710     0.109438         0  \n",
      "236     0.049277 -0.002850   0.107710     0.042299         0  \n",
      "286     0.049277 -0.002850  -0.216563    -0.276653         1  \n",
      "452     0.049277 -0.002850  -0.026694     0.109438         1  \n",
      "87      0.049277 -0.002850  -0.026694     0.034752         1  \n",
      "601     0.049277  0.120217   0.107710     0.109438         1  \n",
      "533    -0.141104  0.120217   0.107710     0.109438         1  \n",
      "745     0.049277 -0.002850  -0.216563    -0.276653         1  \n",
      "408     0.049277 -0.002850  -0.026694     0.034752         1  \n",
      "69     -0.141104  0.120217   0.107710    -0.276653         0  \n",
      "842     0.049277 -0.002850   0.107710     0.042299         1  \n",
      "231     0.049277 -0.002850  -0.216563    -0.276653         0  \n",
      "815    -0.141104  0.057070   0.107710    -0.276653         0  \n",
      "749     0.049277 -0.002850  -0.216563     0.042299         1  \n",
      "786     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "282     0.049277  0.057070   0.107710     0.109438         1  \n",
      "924    -0.141104 -0.002850   0.107710     0.109438         1  \n",
      "368    -0.141104 -0.220755   0.107710     0.034752         1  \n",
      "937     0.049277 -0.002850  -0.026694     0.109438         0  \n",
      "6      -0.141104 -0.002850  -0.216563    -0.276653         1  \n",
      "572     0.049277  0.120217  -0.216563    -0.276653         1  \n",
      "222    -0.141104 -0.220755  -0.026694     0.109438         1  \n",
      "371     0.049277  0.120217   0.107710    -0.276653         1  \n",
      "387    -0.141104 -0.220755  -0.026694     0.034752         1  \n",
      "723     0.049277 -0.220755  -0.026694     0.109438         0  \n",
      "...          ...       ...        ...          ...       ...  \n",
      "241     0.049277 -0.002850  -0.026694     0.042299         0  \n",
      "959     0.049277  0.120217  -0.216563    -0.276653         0  \n",
      "648     0.049277 -0.002850   0.107710     0.109438         0  \n",
      "71      0.049277 -0.002850  -0.216563    -0.276653         1  \n",
      "165     0.049277  0.120217  -0.026694    -0.276653         1  \n",
      "643     0.049277  0.120217  -0.216563     0.034752         0  \n",
      "564    -0.141104  0.120217  -0.216563    -0.276653         0  \n",
      "917     0.049277 -0.002850   0.107710     0.109438         1  \n",
      "239     0.049277 -0.002850  -0.026694     0.109438         1  \n",
      "98      0.049277 -0.002850   0.107710     0.034752         1  \n",
      "349     0.049277 -0.002850   0.107710     0.109438         1  \n",
      "984     0.049277 -0.002850  -0.216563    -0.276653         0  \n",
      "781     0.049277 -0.220755  -0.216563    -0.276653         0  \n",
      "43      0.049277  0.120217  -0.216563     0.034752         1  \n",
      "988     0.049277  0.057070   0.107710     0.034752         1  \n",
      "263    -0.141104  0.120217  -0.216563     0.034752         1  \n",
      "519     0.049277  0.120217  -0.026694     0.109438         1  \n",
      "928    -0.141104  0.120217  -0.216563    -0.276653         0  \n",
      "730     0.049277  0.120217  -0.026694     0.042299         1  \n",
      "188    -0.141104  0.057070  -0.026694     0.034752         1  \n",
      "480     0.049277  0.120217   0.107710     0.034752         1  \n",
      "296     0.049277 -0.002850  -0.216563    -0.276653         0  \n",
      "224     0.049277 -0.002850   0.107710     0.042299         1  \n",
      "649    -0.141104  0.120217  -0.026694     0.042299         0  \n",
      "944     0.049277  0.120217   0.107710     0.109438         1  \n",
      "545     0.049277  0.057070  -0.026694     0.109438         1  \n",
      "718    -0.141104 -0.002850   0.107710     0.034752         1  \n",
      "50      0.049277 -0.002850   0.107710     0.109438         1  \n",
      "363     0.049277  0.120217   0.107710     0.109438         1  \n",
      "931     0.049277 -0.220755   0.107710     0.042299         1  \n",
      "\n",
      "[667 rows x 14 columns]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/pandas/core/categorical.py:758: FutureWarning: \n",
      "Setting NaNs in `categories` is deprecated and will be removed in a future version of pandas.\n",
      "  cat.categories = new_categories\n"
     ]
    }
   ],
   "source": [
    "##训练集的woe替换\n",
    "data = pd.DataFrame(index=train.index)\n",
    "#print(data)\n",
    "K_woe = 0\n",
    "a=[var for var in include if include[var]==1]\n",
    "#print(a)\n",
    "\n",
    "for var in a:\n",
    "    bins = pd.cut(train_x[var].values,qs_dict[var], include_lowest=False)\n",
    "    data[\"woe#{}\".format(var)] = bins.rename_categories([woe_mapper_all[var][x] for x in bins.categories])\n",
    "    K_woe += 1\n",
    "    \n",
    "final=pd.concat((data,train_y),axis=1)\n",
    "print(final)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 317,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     woe#CHK_ACCT woe#HISTORY woe#NEW_CAR woe#RADIO/TV woe#SAV_ACCT  \\\n",
      "OBS#                                                                  \n",
      "436     -0.142568   -0.065492    0.045961     0.141488     0.191461   \n",
      "874      0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "546     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "161      0.244921    0.123843    0.045961     0.141488    -0.124755   \n",
      "607      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "704     -0.142568    0.123843    0.045961    -0.063882    -0.124755   \n",
      "510      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "303      0.132494    0.123843   -0.167315    -0.063882     0.191461   \n",
      "905      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "930     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "141      0.132494   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "554     -0.142568    0.123843   -0.167315    -0.063882    -0.124755   \n",
      "750      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "974     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "34       0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "636      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "998      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "950      0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "48      -0.348744   -0.065492    0.045961    -0.063882     0.237520   \n",
      "219     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "838      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "413      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "675      0.244921    0.123843    0.045961    -0.063882     0.237520   \n",
      "731     -0.142568    0.123843    0.045961     0.141488    -0.093320   \n",
      "41       0.244921   -0.065492    0.045961     0.141488     0.237520   \n",
      "52      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "449      0.132494   -0.065492    0.045961    -0.063882     0.191461   \n",
      "529     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "344     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "110     -0.142568   -0.065492    0.045961    -0.063882     0.237520   \n",
      "...           ...         ...         ...          ...          ...   \n",
      "404      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "446      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "565     -0.142568    0.123843    0.045961    -0.063882     0.191461   \n",
      "595     -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "257      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "145      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "486     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "679     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "700      0.132494   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "47       0.244921   -0.065492    0.045961     0.141488     0.237520   \n",
      "621     -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "279      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "348     -0.142568   -0.065492    0.045961     0.141488     0.237520   \n",
      "133      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "500      0.132494    0.123843   -0.167315    -0.063882    -0.124755   \n",
      "863     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "783     -0.142568   -0.533065    0.045961    -0.063882    -0.093320   \n",
      "915     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "710     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "701      0.244921   -0.065492    0.045961    -0.063882     0.237520   \n",
      "881      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "746     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "312      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "389     -0.142568    0.123843    0.045961    -0.063882     0.237520   \n",
      "632     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "884      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "766     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "70       0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "75      -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "551      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "\n",
      "     woe#EMPLOYMENT woe#REAL_ESTATE woe#PROP_UNKN_NONE woe#OTHER_INSTALL  \\\n",
      "OBS#                                                                       \n",
      "436        0.017419        0.120077           0.036286          0.039296   \n",
      "874       -0.187461        0.120077           0.036286          0.039296   \n",
      "546       -0.204561        0.120077           0.036286          0.039296   \n",
      "161        0.083369        0.120077           0.036286          0.039296   \n",
      "607        0.017419        0.120077           0.036286          0.039296   \n",
      "704        0.083369       -0.050982           0.036286         -0.190895   \n",
      "510        0.083369       -0.050982           0.036286          0.039296   \n",
      "303        0.070266        0.120077           0.036286         -0.190895   \n",
      "905        0.083369        0.120077           0.036286          0.039296   \n",
      "930        0.017419        0.120077           0.036286          0.039296   \n",
      "141       -0.187461        0.120077           0.036286          0.039296   \n",
      "554       -0.187461       -0.050982           0.036286          0.039296   \n",
      "750        0.070266       -0.050982           0.036286          0.039296   \n",
      "974        0.083369       -0.050982          -0.223195          0.039296   \n",
      "34         0.083369       -0.050982          -0.223195          0.039296   \n",
      "636        0.083369       -0.050982           0.036286         -0.190895   \n",
      "998        0.083369       -0.050982           0.036286          0.039296   \n",
      "950        0.083369       -0.050982           0.036286          0.039296   \n",
      "48        -0.204561       -0.050982           0.036286          0.039296   \n",
      "219        0.017419        0.120077           0.036286          0.039296   \n",
      "838       -0.187461        0.120077           0.036286          0.039296   \n",
      "413       -0.204561       -0.050982           0.036286         -0.190895   \n",
      "675       -0.187461        0.120077           0.036286         -0.190895   \n",
      "731       -0.187461       -0.050982           0.036286          0.039296   \n",
      "41         0.083369       -0.050982           0.036286         -0.190895   \n",
      "52         0.083369       -0.050982           0.036286          0.039296   \n",
      "449        0.083369        0.120077           0.036286          0.039296   \n",
      "529        0.017419       -0.050982           0.036286          0.039296   \n",
      "344        0.083369        0.120077           0.036286         -0.190895   \n",
      "110        0.083369        0.120077           0.036286          0.039296   \n",
      "...             ...             ...                ...               ...   \n",
      "404        0.017419       -0.050982           0.036286          0.039296   \n",
      "446        0.083369       -0.050982           0.036286          0.039296   \n",
      "565        0.017419       -0.050982           0.036286         -0.190895   \n",
      "595        0.083369       -0.050982           0.036286         -0.190895   \n",
      "257        0.017419        0.120077           0.036286          0.039296   \n",
      "145       -0.187461       -0.050982           0.036286          0.039296   \n",
      "486       -0.204561       -0.050982           0.036286          0.039296   \n",
      "679        0.083369        0.120077           0.036286         -0.190895   \n",
      "700        0.083369       -0.050982           0.036286          0.039296   \n",
      "47         0.083369       -0.050982           0.036286          0.039296   \n",
      "621        0.070266       -0.050982           0.036286          0.039296   \n",
      "279       -0.187461       -0.050982           0.036286          0.039296   \n",
      "348       -0.204561       -0.050982          -0.223195          0.039296   \n",
      "133       -0.187461       -0.050982           0.036286         -0.190895   \n",
      "500        0.083369       -0.050982           0.036286          0.039296   \n",
      "863       -0.187461        0.120077           0.036286          0.039296   \n",
      "783        0.017419        0.120077           0.036286          0.039296   \n",
      "915        0.017419       -0.050982           0.036286          0.039296   \n",
      "710        0.017419        0.120077           0.036286          0.039296   \n",
      "701        0.017419       -0.050982           0.036286          0.039296   \n",
      "881        0.070266       -0.050982           0.036286          0.039296   \n",
      "746       -0.187461       -0.050982           0.036286         -0.190895   \n",
      "312        0.017419       -0.050982           0.036286         -0.190895   \n",
      "389        0.017419       -0.050982           0.036286         -0.190895   \n",
      "632        0.017419       -0.050982           0.036286         -0.190895   \n",
      "884       -0.204561       -0.050982           0.036286          0.039296   \n",
      "766        0.083369        0.120077           0.036286         -0.190895   \n",
      "70         0.017419       -0.050982           0.036286          0.039296   \n",
      "75         0.083369       -0.050982          -0.223195          0.039296   \n",
      "551        0.070266        0.120077           0.036286          0.039296   \n",
      "\n",
      "     woe#OWN_RES   woe#AGE woe#AMOUNT woe#DURATION  RESPONSE  \n",
      "OBS#                                                          \n",
      "436     0.049277 -0.220755   0.107710     0.109438         0  \n",
      "874     0.049277 -0.220755  -0.026694     0.034752         1  \n",
      "546    -0.141104  0.120217  -0.026694     0.042299         0  \n",
      "161     0.049277  0.120217   0.107710     0.042299         1  \n",
      "607     0.049277  0.057070  -0.216563     0.042299         1  \n",
      "704     0.049277  0.120217   0.107710    -0.276653         1  \n",
      "510     0.049277  0.120217  -0.216563    -0.276653         1  \n",
      "303     0.049277  0.120217  -0.026694     0.042299         0  \n",
      "905     0.049277  0.120217  -0.026694     0.042299         1  \n",
      "930     0.049277  0.120217  -0.026694     0.109438         1  \n",
      "141     0.049277 -0.002850  -0.026694     0.109438         1  \n",
      "554     0.049277 -0.002850   0.107710     0.109438         1  \n",
      "750     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "974    -0.141104  0.120217  -0.216563    -0.276653         0  \n",
      "34     -0.141104  0.057070  -0.026694     0.109438         1  \n",
      "636     0.049277  0.057070   0.107710     0.109438         1  \n",
      "998     0.049277  0.120217  -0.026694     0.109438         1  \n",
      "950     0.049277 -0.002850   0.107710     0.042299         0  \n",
      "48     -0.141104 -0.220755  -0.026694     0.109438         1  \n",
      "219    -0.141104 -0.220755   0.107710     0.042299         1  \n",
      "838    -0.141104 -0.220755  -0.026694     0.109438         1  \n",
      "413     0.049277  0.120217   0.107710     0.109438         0  \n",
      "675     0.049277  0.120217   0.107710     0.042299         0  \n",
      "731     0.049277 -0.002850  -0.216563     0.042299         1  \n",
      "41      0.049277 -0.002850   0.107710    -0.276653         1  \n",
      "52      0.049277 -0.002850  -0.216563    -0.276653         1  \n",
      "449     0.049277  0.057070   0.107710     0.109438         1  \n",
      "529    -0.141104 -0.002850   0.107710    -0.276653         0  \n",
      "344     0.049277 -0.002850  -0.216563     0.034752         1  \n",
      "110     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "...          ...       ...        ...          ...       ...  \n",
      "404     0.049277 -0.002850  -0.026694     0.034752         1  \n",
      "446    -0.141104  0.120217  -0.026694     0.109438         1  \n",
      "565     0.049277  0.120217  -0.216563     0.042299         1  \n",
      "595     0.049277  0.120217  -0.026694     0.042299         0  \n",
      "257     0.049277 -0.002850   0.107710     0.042299         1  \n",
      "145     0.049277 -0.220755   0.107710     0.042299         1  \n",
      "486     0.049277  0.057070  -0.026694     0.109438         0  \n",
      "679    -0.141104  0.057070   0.107710     0.042299         1  \n",
      "700    -0.141104  0.120217   0.107710     0.034752         1  \n",
      "47      0.049277  0.120217   0.107710    -0.276653         1  \n",
      "621     0.049277 -0.002850   0.107710     0.042299         1  \n",
      "279     0.049277 -0.002850  -0.216563     0.109438         0  \n",
      "348    -0.141104 -0.220755   0.107710     0.042299         1  \n",
      "133     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "500     0.049277 -0.002850  -0.026694     0.109438         1  \n",
      "863     0.049277 -0.002850   0.107710     0.042299         0  \n",
      "783     0.049277 -0.002850   0.107710     0.109438         1  \n",
      "915    -0.141104 -0.002850   0.107710     0.042299         0  \n",
      "710     0.049277  0.120217   0.107710     0.109438         1  \n",
      "701    -0.141104 -0.002850  -0.026694     0.109438         0  \n",
      "881     0.049277  0.120217  -0.216563     0.042299         1  \n",
      "746     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "312     0.049277 -0.220755  -0.216563     0.042299         1  \n",
      "389     0.049277 -0.002850   0.107710     0.034752         1  \n",
      "632     0.049277  0.120217   0.107710     0.034752         0  \n",
      "884     0.049277  0.057070  -0.026694     0.034752         1  \n",
      "766     0.049277  0.120217  -0.026694     0.109438         1  \n",
      "70      0.049277 -0.220755   0.107710    -0.276653         1  \n",
      "75      0.049277  0.120217   0.107710    -0.276653         0  \n",
      "551     0.049277 -0.220755  -0.026694     0.109438         1  \n",
      "\n",
      "[333 rows x 14 columns]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/pandas/core/categorical.py:758: FutureWarning: \n",
      "Setting NaNs in `categories` is deprecated and will be removed in a future version of pandas.\n",
      "  cat.categories = new_categories\n"
     ]
    }
   ],
   "source": [
    "##测试集的woe替换\n",
    "test_x=test.iloc[:,:30]\n",
    "test_y=test.iloc[:,30]\n",
    "\n",
    "data2 = pd.DataFrame(index=test.index)\n",
    "#print(data)\n",
    "K_woe = 0\n",
    "a=[var for var in include if include[var]==1]\n",
    "#print(a)\n",
    "\n",
    "for var in a:\n",
    "    bins = pd.cut(test_x[var].values,qs_dict[var], include_lowest=False)\n",
    "    data2[\"woe#{}\".format(var)] = bins.rename_categories([woe_mapper_all[var][x] for x in bins.categories])\n",
    "    K_woe += 1\n",
    "    \n",
    "test_final=pd.concat((data2,test_y),axis=1)\n",
    "print(test_final)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 322,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     woe#CHK_ACCT woe#HISTORY woe#NEW_CAR woe#RADIO/TV woe#SAV_ACCT  \\\n",
      "OBS#                                                                  \n",
      "206     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "642     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "468      0.244921    0.123843    0.045961     0.141488     0.191461   \n",
      "962     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "837      0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "425     -0.142568   -0.065492    0.045961    -0.063882     0.191461   \n",
      "236     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "286     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "452      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "87      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "601     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "533      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "745     -0.348744    0.123843    0.045961    -0.063882     0.191461   \n",
      "408     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "69       0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "842      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "231      0.132494   -0.065492    0.045961     0.141488    -0.093320   \n",
      "815     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "749      0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "786     -0.142568   -0.065492    0.045961    -0.063882     0.237520   \n",
      "282      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "924     -0.142568   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "368     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "937      0.132494   -0.065492    0.045961     0.141488    -0.093320   \n",
      "6        0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "572      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "222     -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "371      0.244921   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "387      0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "723     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "...           ...         ...         ...          ...          ...   \n",
      "241     -0.348744   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "959     -0.348744   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "648      0.244921   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "71       0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "165      0.244921   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "643      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "564     -0.142568   -0.065492   -0.167315    -0.063882     0.191461   \n",
      "917      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "239      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "98      -0.142568   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "349      0.244921    0.123843    0.045961    -0.063882    -0.124755   \n",
      "984     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "781     -0.142568    0.123843    0.045961     0.141488    -0.093320   \n",
      "43      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "988      0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "263     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "519     -0.348744   -0.065492   -0.167315    -0.063882    -0.124755   \n",
      "928     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "730      0.132494    0.123843    0.045961    -0.063882     0.237520   \n",
      "188     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "480     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "296     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "224      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "649      0.132494   -0.065492   -0.167315    -0.063882    -0.093320   \n",
      "944      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "545      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "718      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "50       0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "363      0.132494    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "931     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "\n",
      "     woe#EMPLOYMENT woe#REAL_ESTATE woe#PROP_UNKN_NONE woe#OTHER_INSTALL  \\\n",
      "OBS#                                                                       \n",
      "206        0.083369       -0.050982          -0.223195          0.039296   \n",
      "642        0.083369       -0.050982           0.036286          0.039296   \n",
      "468        0.083369       -0.050982           0.036286         -0.190895   \n",
      "962        0.017419       -0.050982           0.036286          0.039296   \n",
      "837        0.017419       -0.050982           0.036286          0.039296   \n",
      "425        0.083369       -0.050982           0.036286         -0.190895   \n",
      "236       -0.204561       -0.050982           0.036286         -0.190895   \n",
      "286       -0.187461        0.120077           0.036286          0.039296   \n",
      "452        0.017419        0.120077           0.036286          0.039296   \n",
      "87        -0.187461       -0.050982           0.036286          0.039296   \n",
      "601       -0.187461        0.120077           0.036286          0.039296   \n",
      "533        0.017419        0.120077           0.036286          0.039296   \n",
      "745        0.070266       -0.050982           0.036286          0.039296   \n",
      "408       -0.187461        0.120077           0.036286          0.039296   \n",
      "69         0.017419       -0.050982          -0.223195         -0.190895   \n",
      "842        0.017419        0.120077           0.036286         -0.190895   \n",
      "231        0.017419       -0.050982           0.036286          0.039296   \n",
      "815        0.070266       -0.050982          -0.223195          0.039296   \n",
      "749        0.017419       -0.050982           0.036286          0.039296   \n",
      "786        0.017419       -0.050982           0.036286          0.039296   \n",
      "282        0.017419        0.120077           0.036286          0.039296   \n",
      "924        0.070266       -0.050982           0.036286          0.039296   \n",
      "368       -0.187461       -0.050982           0.036286          0.039296   \n",
      "937        0.017419        0.120077           0.036286          0.039296   \n",
      "6          0.017419       -0.050982          -0.223195          0.039296   \n",
      "572        0.070266       -0.050982           0.036286          0.039296   \n",
      "222        0.017419       -0.050982           0.036286         -0.190895   \n",
      "371        0.017419        0.120077           0.036286          0.039296   \n",
      "387       -0.187461        0.120077           0.036286          0.039296   \n",
      "723        0.017419        0.120077           0.036286          0.039296   \n",
      "...             ...             ...                ...               ...   \n",
      "241        0.083369       -0.050982           0.036286         -0.190895   \n",
      "959        0.017419       -0.050982           0.036286          0.039296   \n",
      "648        0.017419       -0.050982           0.036286          0.039296   \n",
      "71         0.017419       -0.050982           0.036286         -0.190895   \n",
      "165        0.083369       -0.050982           0.036286          0.039296   \n",
      "643        0.017419       -0.050982           0.036286          0.039296   \n",
      "564        0.017419       -0.050982          -0.223195          0.039296   \n",
      "917        0.017419        0.120077           0.036286          0.039296   \n",
      "239        0.017419       -0.050982           0.036286          0.039296   \n",
      "98         0.017419       -0.050982           0.036286          0.039296   \n",
      "349        0.017419        0.120077           0.036286          0.039296   \n",
      "984        0.017419       -0.050982           0.036286          0.039296   \n",
      "781        0.070266        0.120077           0.036286          0.039296   \n",
      "43         0.017419        0.120077           0.036286          0.039296   \n",
      "988       -0.204561        0.120077           0.036286          0.039296   \n",
      "263        0.083369       -0.050982          -0.223195          0.039296   \n",
      "519        0.083369       -0.050982           0.036286          0.039296   \n",
      "928        0.070266       -0.050982          -0.223195         -0.190895   \n",
      "730        0.017419        0.120077           0.036286          0.039296   \n",
      "188       -0.204561       -0.050982           0.036286          0.039296   \n",
      "480        0.083369       -0.050982           0.036286          0.039296   \n",
      "296       -0.187461       -0.050982           0.036286          0.039296   \n",
      "224        0.017419        0.120077           0.036286          0.039296   \n",
      "649        0.070266       -0.050982          -0.223195         -0.190895   \n",
      "944        0.070266        0.120077           0.036286          0.039296   \n",
      "545        0.083369        0.120077           0.036286          0.039296   \n",
      "718        0.017419       -0.050982          -0.223195          0.039296   \n",
      "50         0.017419        0.120077           0.036286          0.039296   \n",
      "363        0.017419       -0.050982           0.036286         -0.190895   \n",
      "931       -0.187461       -0.050982           0.036286          0.039296   \n",
      "\n",
      "     woe#OWN_RES   woe#AGE woe#AMOUNT woe#DURATION  \n",
      "OBS#                                                \n",
      "206    -0.141104  0.120217  -0.216563    -0.276653  \n",
      "642     0.049277  0.120217  -0.026694     0.034752  \n",
      "468     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "962     0.049277  0.057070   0.107710     0.042299  \n",
      "837     0.049277 -0.220755  -0.026694     0.109438  \n",
      "425     0.049277 -0.220755   0.107710     0.109438  \n",
      "236     0.049277 -0.002850   0.107710     0.042299  \n",
      "286     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "452     0.049277 -0.002850  -0.026694     0.109438  \n",
      "87      0.049277 -0.002850  -0.026694     0.034752  \n",
      "601     0.049277  0.120217   0.107710     0.109438  \n",
      "533    -0.141104  0.120217   0.107710     0.109438  \n",
      "745     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "408     0.049277 -0.002850  -0.026694     0.034752  \n",
      "69     -0.141104  0.120217   0.107710    -0.276653  \n",
      "842     0.049277 -0.002850   0.107710     0.042299  \n",
      "231     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "815    -0.141104  0.057070   0.107710    -0.276653  \n",
      "749     0.049277 -0.002850  -0.216563     0.042299  \n",
      "786     0.049277 -0.002850   0.107710     0.034752  \n",
      "282     0.049277  0.057070   0.107710     0.109438  \n",
      "924    -0.141104 -0.002850   0.107710     0.109438  \n",
      "368    -0.141104 -0.220755   0.107710     0.034752  \n",
      "937     0.049277 -0.002850  -0.026694     0.109438  \n",
      "6      -0.141104 -0.002850  -0.216563    -0.276653  \n",
      "572     0.049277  0.120217  -0.216563    -0.276653  \n",
      "222    -0.141104 -0.220755  -0.026694     0.109438  \n",
      "371     0.049277  0.120217   0.107710    -0.276653  \n",
      "387    -0.141104 -0.220755  -0.026694     0.034752  \n",
      "723     0.049277 -0.220755  -0.026694     0.109438  \n",
      "...          ...       ...        ...          ...  \n",
      "241     0.049277 -0.002850  -0.026694     0.042299  \n",
      "959     0.049277  0.120217  -0.216563    -0.276653  \n",
      "648     0.049277 -0.002850   0.107710     0.109438  \n",
      "71      0.049277 -0.002850  -0.216563    -0.276653  \n",
      "165     0.049277  0.120217  -0.026694    -0.276653  \n",
      "643     0.049277  0.120217  -0.216563     0.034752  \n",
      "564    -0.141104  0.120217  -0.216563    -0.276653  \n",
      "917     0.049277 -0.002850   0.107710     0.109438  \n",
      "239     0.049277 -0.002850  -0.026694     0.109438  \n",
      "98      0.049277 -0.002850   0.107710     0.034752  \n",
      "349     0.049277 -0.002850   0.107710     0.109438  \n",
      "984     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "781     0.049277 -0.220755  -0.216563    -0.276653  \n",
      "43      0.049277  0.120217  -0.216563     0.034752  \n",
      "988     0.049277  0.057070   0.107710     0.034752  \n",
      "263    -0.141104  0.120217  -0.216563     0.034752  \n",
      "519     0.049277  0.120217  -0.026694     0.109438  \n",
      "928    -0.141104  0.120217  -0.216563    -0.276653  \n",
      "730     0.049277  0.120217  -0.026694     0.042299  \n",
      "188    -0.141104  0.057070  -0.026694     0.034752  \n",
      "480     0.049277  0.120217   0.107710     0.034752  \n",
      "296     0.049277 -0.002850  -0.216563    -0.276653  \n",
      "224     0.049277 -0.002850   0.107710     0.042299  \n",
      "649    -0.141104  0.120217  -0.026694     0.042299  \n",
      "944     0.049277  0.120217   0.107710     0.109438  \n",
      "545     0.049277  0.057070  -0.026694     0.109438  \n",
      "718    -0.141104 -0.002850   0.107710     0.034752  \n",
      "50      0.049277 -0.002850   0.107710     0.109438  \n",
      "363     0.049277  0.120217   0.107710     0.109438  \n",
      "931     0.049277 -0.220755   0.107710     0.042299  \n",
      "\n",
      "[667 rows x 13 columns]\n",
      "OBS#\n",
      "206    1\n",
      "642    1\n",
      "468    1\n",
      "962    1\n",
      "837    1\n",
      "425    0\n",
      "236    0\n",
      "286    1\n",
      "452    1\n",
      "87     1\n",
      "601    1\n",
      "533    1\n",
      "745    1\n",
      "408    1\n",
      "69     0\n",
      "842    1\n",
      "231    0\n",
      "815    0\n",
      "749    1\n",
      "786    1\n",
      "282    1\n",
      "924    1\n",
      "368    1\n",
      "937    0\n",
      "6      1\n",
      "572    1\n",
      "222    1\n",
      "371    1\n",
      "387    1\n",
      "723    0\n",
      "      ..\n",
      "241    0\n",
      "959    0\n",
      "648    0\n",
      "71     1\n",
      "165    1\n",
      "643    0\n",
      "564    0\n",
      "917    1\n",
      "239    1\n",
      "98     1\n",
      "349    1\n",
      "984    0\n",
      "781    0\n",
      "43     1\n",
      "988    1\n",
      "263    1\n",
      "519    1\n",
      "928    0\n",
      "730    1\n",
      "188    1\n",
      "480    1\n",
      "296    0\n",
      "224    1\n",
      "649    0\n",
      "944    1\n",
      "545    1\n",
      "718    1\n",
      "50     1\n",
      "363    1\n",
      "931    1\n",
      "Name: RESPONSE, dtype: int64\n",
      "     woe#CHK_ACCT woe#HISTORY woe#NEW_CAR woe#RADIO/TV woe#SAV_ACCT  \\\n",
      "OBS#                                                                  \n",
      "436     -0.142568   -0.065492    0.045961     0.141488     0.191461   \n",
      "874      0.244921   -0.065492    0.045961    -0.063882     0.191461   \n",
      "546     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "161      0.244921    0.123843    0.045961     0.141488    -0.124755   \n",
      "607      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "704     -0.142568    0.123843    0.045961    -0.063882    -0.124755   \n",
      "510      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "303      0.132494    0.123843   -0.167315    -0.063882     0.191461   \n",
      "905      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "930     -0.348744    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "141      0.132494   -0.065492   -0.167315    -0.063882     0.237520   \n",
      "554     -0.142568    0.123843   -0.167315    -0.063882    -0.124755   \n",
      "750      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "974     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "34       0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "636      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "998      0.244921   -0.065492    0.045961     0.141488    -0.093320   \n",
      "950      0.244921   -0.065492    0.045961     0.141488    -0.124755   \n",
      "48      -0.348744   -0.065492    0.045961    -0.063882     0.237520   \n",
      "219     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "838      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "413      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "675      0.244921    0.123843    0.045961    -0.063882     0.237520   \n",
      "731     -0.142568    0.123843    0.045961     0.141488    -0.093320   \n",
      "41       0.244921   -0.065492    0.045961     0.141488     0.237520   \n",
      "52      -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "449      0.132494   -0.065492    0.045961    -0.063882     0.191461   \n",
      "529     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "344     -0.142568   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "110     -0.142568   -0.065492    0.045961    -0.063882     0.237520   \n",
      "...           ...         ...         ...          ...          ...   \n",
      "404      0.244921    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "446      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "565     -0.142568    0.123843    0.045961    -0.063882     0.191461   \n",
      "595     -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "257      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "145      0.244921    0.123843    0.045961    -0.063882    -0.093320   \n",
      "486     -0.142568    0.123843   -0.167315    -0.063882    -0.093320   \n",
      "679     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "700      0.132494   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "47       0.244921   -0.065492    0.045961     0.141488     0.237520   \n",
      "621     -0.142568    0.123843    0.045961    -0.063882    -0.093320   \n",
      "279      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "348     -0.142568   -0.065492    0.045961     0.141488     0.237520   \n",
      "133      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "500      0.132494    0.123843   -0.167315    -0.063882    -0.124755   \n",
      "863     -0.348744   -0.065492    0.045961     0.141488    -0.093320   \n",
      "783     -0.142568   -0.533065    0.045961    -0.063882    -0.093320   \n",
      "915     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "710     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "701      0.244921   -0.065492    0.045961    -0.063882     0.237520   \n",
      "881      0.244921   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "746     -0.348744    0.123843    0.045961    -0.063882    -0.093320   \n",
      "312      0.244921   -0.065492    0.045961    -0.063882    -0.124755   \n",
      "389     -0.142568    0.123843    0.045961    -0.063882     0.237520   \n",
      "632     -0.348744   -0.065492    0.045961    -0.063882    -0.093320   \n",
      "884      0.244921    0.123843    0.045961     0.141488    -0.093320   \n",
      "766     -0.142568   -0.065492    0.045961     0.141488    -0.093320   \n",
      "70       0.244921   -0.065492    0.045961     0.141488     0.191461   \n",
      "75      -0.348744   -0.065492    0.045961    -0.063882     0.191461   \n",
      "551      0.244921    0.123843    0.045961    -0.063882     0.191461   \n",
      "\n",
      "     woe#EMPLOYMENT woe#REAL_ESTATE woe#PROP_UNKN_NONE woe#OTHER_INSTALL  \\\n",
      "OBS#                                                                       \n",
      "436        0.017419        0.120077           0.036286          0.039296   \n",
      "874       -0.187461        0.120077           0.036286          0.039296   \n",
      "546       -0.204561        0.120077           0.036286          0.039296   \n",
      "161        0.083369        0.120077           0.036286          0.039296   \n",
      "607        0.017419        0.120077           0.036286          0.039296   \n",
      "704        0.083369       -0.050982           0.036286         -0.190895   \n",
      "510        0.083369       -0.050982           0.036286          0.039296   \n",
      "303        0.070266        0.120077           0.036286         -0.190895   \n",
      "905        0.083369        0.120077           0.036286          0.039296   \n",
      "930        0.017419        0.120077           0.036286          0.039296   \n",
      "141       -0.187461        0.120077           0.036286          0.039296   \n",
      "554       -0.187461       -0.050982           0.036286          0.039296   \n",
      "750        0.070266       -0.050982           0.036286          0.039296   \n",
      "974        0.083369       -0.050982          -0.223195          0.039296   \n",
      "34         0.083369       -0.050982          -0.223195          0.039296   \n",
      "636        0.083369       -0.050982           0.036286         -0.190895   \n",
      "998        0.083369       -0.050982           0.036286          0.039296   \n",
      "950        0.083369       -0.050982           0.036286          0.039296   \n",
      "48        -0.204561       -0.050982           0.036286          0.039296   \n",
      "219        0.017419        0.120077           0.036286          0.039296   \n",
      "838       -0.187461        0.120077           0.036286          0.039296   \n",
      "413       -0.204561       -0.050982           0.036286         -0.190895   \n",
      "675       -0.187461        0.120077           0.036286         -0.190895   \n",
      "731       -0.187461       -0.050982           0.036286          0.039296   \n",
      "41         0.083369       -0.050982           0.036286         -0.190895   \n",
      "52         0.083369       -0.050982           0.036286          0.039296   \n",
      "449        0.083369        0.120077           0.036286          0.039296   \n",
      "529        0.017419       -0.050982           0.036286          0.039296   \n",
      "344        0.083369        0.120077           0.036286         -0.190895   \n",
      "110        0.083369        0.120077           0.036286          0.039296   \n",
      "...             ...             ...                ...               ...   \n",
      "404        0.017419       -0.050982           0.036286          0.039296   \n",
      "446        0.083369       -0.050982           0.036286          0.039296   \n",
      "565        0.017419       -0.050982           0.036286         -0.190895   \n",
      "595        0.083369       -0.050982           0.036286         -0.190895   \n",
      "257        0.017419        0.120077           0.036286          0.039296   \n",
      "145       -0.187461       -0.050982           0.036286          0.039296   \n",
      "486       -0.204561       -0.050982           0.036286          0.039296   \n",
      "679        0.083369        0.120077           0.036286         -0.190895   \n",
      "700        0.083369       -0.050982           0.036286          0.039296   \n",
      "47         0.083369       -0.050982           0.036286          0.039296   \n",
      "621        0.070266       -0.050982           0.036286          0.039296   \n",
      "279       -0.187461       -0.050982           0.036286          0.039296   \n",
      "348       -0.204561       -0.050982          -0.223195          0.039296   \n",
      "133       -0.187461       -0.050982           0.036286         -0.190895   \n",
      "500        0.083369       -0.050982           0.036286          0.039296   \n",
      "863       -0.187461        0.120077           0.036286          0.039296   \n",
      "783        0.017419        0.120077           0.036286          0.039296   \n",
      "915        0.017419       -0.050982           0.036286          0.039296   \n",
      "710        0.017419        0.120077           0.036286          0.039296   \n",
      "701        0.017419       -0.050982           0.036286          0.039296   \n",
      "881        0.070266       -0.050982           0.036286          0.039296   \n",
      "746       -0.187461       -0.050982           0.036286         -0.190895   \n",
      "312        0.017419       -0.050982           0.036286         -0.190895   \n",
      "389        0.017419       -0.050982           0.036286         -0.190895   \n",
      "632        0.017419       -0.050982           0.036286         -0.190895   \n",
      "884       -0.204561       -0.050982           0.036286          0.039296   \n",
      "766        0.083369        0.120077           0.036286         -0.190895   \n",
      "70         0.017419       -0.050982           0.036286          0.039296   \n",
      "75         0.083369       -0.050982          -0.223195          0.039296   \n",
      "551        0.070266        0.120077           0.036286          0.039296   \n",
      "\n",
      "     woe#OWN_RES   woe#AGE woe#AMOUNT woe#DURATION  \n",
      "OBS#                                                \n",
      "436     0.049277 -0.220755   0.107710     0.109438  \n",
      "874     0.049277 -0.220755  -0.026694     0.034752  \n",
      "546    -0.141104  0.120217  -0.026694     0.042299  \n",
      "161     0.049277  0.120217   0.107710     0.042299  \n",
      "607     0.049277  0.057070  -0.216563     0.042299  \n",
      "704     0.049277  0.120217   0.107710    -0.276653  \n",
      "510     0.049277  0.120217  -0.216563    -0.276653  \n",
      "303     0.049277  0.120217  -0.026694     0.042299  \n",
      "905     0.049277  0.120217  -0.026694     0.042299  \n",
      "930     0.049277  0.120217  -0.026694     0.109438  \n",
      "141     0.049277 -0.002850  -0.026694     0.109438  \n",
      "554     0.049277 -0.002850   0.107710     0.109438  \n",
      "750     0.049277 -0.002850   0.107710     0.034752  \n",
      "974    -0.141104  0.120217  -0.216563    -0.276653  \n",
      "34     -0.141104  0.057070  -0.026694     0.109438  \n",
      "636     0.049277  0.057070   0.107710     0.109438  \n",
      "998     0.049277  0.120217  -0.026694     0.109438  \n",
      "950     0.049277 -0.002850   0.107710     0.042299  \n",
      "48     -0.141104 -0.220755  -0.026694     0.109438  \n",
      "219    -0.141104 -0.220755   0.107710     0.042299  \n",
      "838    -0.141104 -0.220755  -0.026694     0.109438  \n",
      "413     0.049277  0.120217   0.107710     0.109438  \n",
      "675     0.049277  0.120217   0.107710     0.042299  \n",
      "731     0.049277 -0.002850  -0.216563     0.042299  \n",
      "41      0.049277 -0.002850   0.107710    -0.276653  \n",
      "52      0.049277 -0.002850  -0.216563    -0.276653  \n",
      "449     0.049277  0.057070   0.107710     0.109438  \n",
      "529    -0.141104 -0.002850   0.107710    -0.276653  \n",
      "344     0.049277 -0.002850  -0.216563     0.034752  \n",
      "110     0.049277 -0.002850   0.107710     0.034752  \n",
      "...          ...       ...        ...          ...  \n",
      "404     0.049277 -0.002850  -0.026694     0.034752  \n",
      "446    -0.141104  0.120217  -0.026694     0.109438  \n",
      "565     0.049277  0.120217  -0.216563     0.042299  \n",
      "595     0.049277  0.120217  -0.026694     0.042299  \n",
      "257     0.049277 -0.002850   0.107710     0.042299  \n",
      "145     0.049277 -0.220755   0.107710     0.042299  \n",
      "486     0.049277  0.057070  -0.026694     0.109438  \n",
      "679    -0.141104  0.057070   0.107710     0.042299  \n",
      "700    -0.141104  0.120217   0.107710     0.034752  \n",
      "47      0.049277  0.120217   0.107710    -0.276653  \n",
      "621     0.049277 -0.002850   0.107710     0.042299  \n",
      "279     0.049277 -0.002850  -0.216563     0.109438  \n",
      "348    -0.141104 -0.220755   0.107710     0.042299  \n",
      "133     0.049277 -0.002850   0.107710     0.034752  \n",
      "500     0.049277 -0.002850  -0.026694     0.109438  \n",
      "863     0.049277 -0.002850   0.107710     0.042299  \n",
      "783     0.049277 -0.002850   0.107710     0.109438  \n",
      "915    -0.141104 -0.002850   0.107710     0.042299  \n",
      "710     0.049277  0.120217   0.107710     0.109438  \n",
      "701    -0.141104 -0.002850  -0.026694     0.109438  \n",
      "881     0.049277  0.120217  -0.216563     0.042299  \n",
      "746     0.049277 -0.002850   0.107710     0.034752  \n",
      "312     0.049277 -0.220755  -0.216563     0.042299  \n",
      "389     0.049277 -0.002850   0.107710     0.034752  \n",
      "632     0.049277  0.120217   0.107710     0.034752  \n",
      "884     0.049277  0.057070  -0.026694     0.034752  \n",
      "766     0.049277  0.120217  -0.026694     0.109438  \n",
      "70      0.049277 -0.220755   0.107710    -0.276653  \n",
      "75      0.049277  0.120217   0.107710    -0.276653  \n",
      "551     0.049277 -0.220755  -0.026694     0.109438  \n",
      "\n",
      "[333 rows x 13 columns]\n",
      "OBS#\n",
      "436    0\n",
      "874    1\n",
      "546    0\n",
      "161    1\n",
      "607    1\n",
      "704    1\n",
      "510    1\n",
      "303    0\n",
      "905    1\n",
      "930    1\n",
      "141    1\n",
      "554    1\n",
      "750    1\n",
      "974    0\n",
      "34     1\n",
      "636    1\n",
      "998    1\n",
      "950    0\n",
      "48     1\n",
      "219    1\n",
      "838    1\n",
      "413    0\n",
      "675    0\n",
      "731    1\n",
      "41     1\n",
      "52     1\n",
      "449    1\n",
      "529    0\n",
      "344    1\n",
      "110    1\n",
      "      ..\n",
      "404    1\n",
      "446    1\n",
      "565    1\n",
      "595    0\n",
      "257    1\n",
      "145    1\n",
      "486    0\n",
      "679    1\n",
      "700    1\n",
      "47     1\n",
      "621    1\n",
      "279    0\n",
      "348    1\n",
      "133    1\n",
      "500    1\n",
      "863    0\n",
      "783    1\n",
      "915    0\n",
      "710    1\n",
      "701    0\n",
      "881    1\n",
      "746    1\n",
      "312    1\n",
      "389    1\n",
      "632    0\n",
      "884    1\n",
      "766    1\n",
      "70     1\n",
      "75     0\n",
      "551    1\n",
      "Name: RESPONSE, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#数据拆分\n",
    "train_lr=final.iloc[:,:13]\n",
    "print(train_lr)\n",
    "train_y=final.iloc[:,13]\n",
    "print(train_y)\n",
    "\n",
    "\n",
    "test_lr=test_final.iloc[:,:13]\n",
    "print(test_lr)\n",
    "test_y=test_final.iloc[:,13]\n",
    "print(test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 338,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ks: 0.394302848576 p_value 4.36759283419e-46\n",
      "[[ 2.56664706  1.36563262  1.47955224  1.06985706  2.08717185  1.20463108\n",
      "   0.65701157  0.9729717   1.54205163  0.74215364  1.71845556  1.26055628\n",
      "   1.95538219]]\n",
      "[ 1.21624909]\n",
      "[ 0.17042286  0.48527889  0.1185906   0.68246551  0.10646032  0.13321497\n",
      "  0.07142179  0.54366546  0.41918004  0.48030197  0.60887374  0.44634092\n",
      "  0.52963673  0.70933393  0.31586882  0.26521479  0.48612189  0.28873315\n",
      "  0.58546127  0.1054889   0.63973859  0.28038219  0.18303093  0.87970116\n",
      "  0.73532313  0.48292744  0.29724357  0.20284452  0.39312964  0.09415836\n",
      "  0.78738666  0.79619429  0.31638483  0.35430927  0.12572916  0.62743158\n",
      "  0.54375592  0.38748292  0.45202489  0.69831614  0.59939583  0.73324893\n",
      "  0.46055629  0.10115571  0.37290391  0.49588886  0.48300288  0.13660362\n",
      "  0.48687693  0.51949127  0.38690944  0.52148619  0.57585217  0.45351152\n",
      "  0.67936594  0.51632508  0.59157646  0.62253855  0.08496346  0.6199927\n",
      "  0.26486649  0.59434081  0.38187695  0.10578301  0.5733713   0.40099629\n",
      "  0.65926374  0.25540552  0.6714021   0.45328636  0.18737597  0.09291146\n",
      "  0.70567676  0.22691999  0.1530527   0.42779097  0.31152951  0.57873141\n",
      "  0.29709332  0.57181629  0.0738786   0.54790721  0.09017367  0.46531487\n",
      "  0.20977492  0.58527388  0.41877981  0.84824447  0.44664084  0.54565002\n",
      "  0.32496078  0.34530241  0.2026876   0.3880684   0.44303648  0.08279571\n",
      "  0.44722208  0.4062916 ]\n",
      "<class 'numpy.ndarray'>\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:6: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n"
     ]
    }
   ],
   "source": [
    "##逻辑回归\n",
    "clf = LogisticRegression()\n",
    "clf.fit(train_lr, train_y)\n",
    "\n",
    "train_p = clf.predict_proba(train_lr)\n",
    "train_ks,train_p=ks_2samp(train_p[train_y==0, 0], train_p[train_y==1, 0])\n",
    "print(\"ks:\",train_ks,\"p_value\",train_p)\n",
    "\n",
    "\n",
    "\n",
    "test_p = clf.predict_proba(test_lr)\n",
    "print(clf.coef_)\n",
    "print(clf.intercept_)\n",
    "\n",
    "\n",
    "print(test_p[test_y==0, 0])\n",
    "\n",
    "print(type(test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 356,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/statsmodels/nonparametric/kdetools.py:20: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n",
      "  y = X[:m/2+1] + np.r_[0,X[m/2+1:],0]*1j\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nJC/y/7Biddr3+8/BAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119731f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ks: 0.406165870604 p_value 1.17769234515e-10\n",
      "0.758635394456 [ 0.76119403  0.74626866  0.79699248  0.78195489  0.70676692]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/caijian271/anaconda/lib/python3.6/site-packages/sklearn/metrics/ranking.py:542: UndefinedMetricWarning: No positive samples in y_true, true positive value should be meaningless\n",
      "  UndefinedMetricWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.73530178028658266"
      ]
     },
     "execution_count": 356,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#test_y=test_y.values\n",
    "sns.distplot(test_p[test_y==0,0], color='blue')\n",
    "sns.distplot(test_p[test_y==1,0], color='red')\n",
    "\n",
    "sns.plt.show()\n",
    "\n",
    "ks,p=ks_2samp(test_p[test_y==0, 0], test_p[test_y==1, 0])\n",
    "\n",
    "print(\"ks:\",ks,\"p_value\",p)\n",
    "#print(test_p)\n",
    "\n",
    "\n",
    "\n",
    "te_p=clf.predict(test_lr)\n",
    "#from sklearn.metrics import accuracy_score\n",
    "#accuracy_score(test_y,te_p)\n",
    "from sklearn import metrics\n",
    "fpr, tpr, thresholds = metrics.roc_curve(test_y, test_p[:,-1], pos_label=2)\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "scores = cross_val_score(clf, train_lr, train_y, cv=5)\n",
    "\n",
    "print (np.mean(scores), scores)\n",
    "\n",
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(test_y, test_p[:,-1])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "##对于建模开始阶段，不区分测试和训练集可以使用cross-validation\n",
    "from itertools import cycle\n",
    "from scipy import interp  \n",
    "from sklearn.metrics import roc_curve, auc \n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "cv = StratifiedKFold(6)\n",
    "\n",
    "\n",
    "mean_tpr = 0.0  \n",
    "mean_fpr = np.linspace(0, 1, 100)  \n",
    "all_tpr = []  \n",
    "\n",
    "colors = cycle(['cyan', 'indigo', 'seagreen', 'yellow', 'blue', 'darkorange'])\n",
    "i=0\n",
    "\n",
    "for (train, test), color in zip(cv.split(x, y), colors):\n",
    "    #通过训练数据，使用模型，并对测试集进行测试，求出预测得分  \n",
    "    probas_ = clf.fit(x[train], y[train]).predict_proba(x[test])  \n",
    "#    print set(y[train])                     #set([0,1]) 即label有两个类别  \n",
    "#    print len(X[train]),len(X[test])        #训练集有84个，测试集有16个  \n",
    "#    print \"++\",probas_                      #predict_proba()函数输出的是测试集在lael各类别上的置信度，  \n",
    "#    #在哪个类别上的置信度高，则分为哪类  \n",
    "    # Compute ROC curve and area the curve  \n",
    "    #通过roc_curve()函数，求出fpr和tpr，以及阈值  \n",
    "    fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])  \n",
    "    mean_tpr += interp(mean_fpr, fpr, tpr)          #对mean_tpr在mean_fpr处进行插值，通过scipy包调用interp()函数  \n",
    "    mean_tpr[0] = 0.0                               #初始处为0  \n",
    "    roc_auc = auc(fpr, tpr)  \n",
    "    #画图，只需要plt.plot(fpr,tpr),变量roc_auc只是记录auc的值，通过auc()函数能计算出来  \n",
    "    plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (i, roc_auc))  \n",
    "    i += 1\n",
    "#画对角线  \n",
    "plt.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6), label='Luck')  \n",
    "  \n",
    "mean_tpr /= len(cv)                     #在mean_fpr100个点，每个点处插值插值多次取平均  \n",
    "mean_tpr[-1] = 1.0                      #坐标最后一个点为（1,1）  \n",
    "mean_auc = auc(mean_fpr, mean_tpr)      #计算平均AUC值  \n",
    "#画平均ROC曲线  \n",
    "#print mean_fpr,len(mean_fpr)  \n",
    "#print mean_tpr  \n",
    "plt.plot(mean_fpr, mean_tpr, 'k--',  \n",
    "         label='Mean ROC (area = %0.2f)' % mean_auc, lw=2)  \n",
    "  \n",
    "plt.xlim([-0.05, 1.05])  \n",
    "plt.ylim([-0.05, 1.05])  \n",
    "plt.xlabel('False Positive Rate')  \n",
    "plt.ylabel('True Positive Rate')  \n",
    "plt.title('Receiver operating characteristic example')  \n",
    "plt.legend(loc=\"lower right\")  \n",
    "plt.show()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 355,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\noTIS3kIIIYTKSHgLIYQQKiPhLYQQQqiMhLcQQgihMm0+vC0WC3q9Hq1Wi06n4/Lly7XGDQYDGo0G\nrVbLpk2b7FSlY6uvh7t27WLixIlMnjwZvV6PxWKxU6WOq74e3jN37lyWLl3aytWpQ309PHnyJImJ\niUyZMoXU1FTMZrOdKnVs9fVxx44dJCQkoNFoWL9+vZ2qdHwnTpxAp9M98HyrZYrSxu3bt0+ZPXu2\noiiKUlhYqEyfPt06VllZqcTExChGo1Exm83KhAkTlF9++cVepTosWz2sqKhQRowYoZSXlyuKoiiv\nvvqqsn//frvU6chs9fCezz77TJk0aZKyZMmS1i5PFWz10GKxKHFxccqlS5cURVGUTZs2KRcvXrRL\nnY6uvtfikCFDlJKSEsVsNlv/fxS1rV27VomNjVUmTpxY6/nWzJQ2f+Z9/PhxIiMjAejXrx+nTp2y\njl28eJHAwEB8fX1xc3NjwIABHDt2zF6lOixbPXRzc2PDhg14eHgAUF1djbu7u13qdGS2eghQUFDA\niRMn0Gq19ihPFWz1sLi4GD8/Pz7++GOSkpIwGo307NnTXqU6tPpeiyEhIZSWllJZWYmiKDg5Odmj\nTIcWGBjIypUrH3i+NTOlzYe3yWTC29vb+tjFxYXq6mrrmI+Pj3XMy8sLk8nU6jU6Ols9dHZ2xt/f\nH4Ds7GzKy8sZMmSIXep0ZLZ6eOPGDVatWoVer7dXeapgq4clJSUUFhaSlJREVlYWR44c4fDhw/Yq\n1aHZ6iNAcHAwGo2GcePGERUVRYcOHexRpkMbNWoUrq6uDzzfmpnS5sPb29ubsrIy62OLxWJt+v1j\nZWVltRovatjq4b3H7777Lnl5eaxcuVLeqdfBVg/37t1LSUkJKSkprF27ll27dpGbm2uvUh2WrR76\n+fnRvXt3goKCaNeuHZGRkQ+cUYoatvp45swZvvzySw4cOIDBYODWrVvs2bPHXqWqTmtmSpsP79DQ\nUA4dOgRAUVERTzzxhHUsKCiIy5cvYzQaqaysJD8/n/79+9urVIdlq4cAer0es9nM6tWrrZfPRW22\nejh16lRyc3PJzs4mJSWF2NhYJkyYYK9SHZatHnbr1o2ysjLrzVf5+fkEBwfbpU5HZ6uPPj4+tG/f\nHnd3d1xcXHjsscf47bff7FWq6rRmpjx43t/GjBw5kry8PCZPnoyiKGRkZLBz507Ky8vRarXMmTOH\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1183db4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<function matplotlib.pyplot.show>"
      ]
     },
     "execution_count": 355,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from itertools import cycle\n",
    "from scipy import interp  \n",
    "from sklearn.metrics import roc_curve, auc \n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "#print(test_p[:,1])\n",
    "mean_tpr = 0.0  \n",
    "mean_fpr = np.linspace(0, 1, 100)  \n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(test_y, test_p[:,1])  \n",
    "mean_tpr += interp(mean_fpr, fpr, tpr)          #对mean_tpr在mean_fpr处进行插值，通过scipy包调用interp()函数  \n",
    "mean_tpr[0] = 0.0                               #初始处为0  \n",
    "roc_auc = auc(fpr, tpr) \n",
    "plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (1, roc_auc))  \n",
    "#画对角线  \n",
    "\n",
    "plt.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6), label='Luck')  \n",
    "\n",
    "  \n",
    "plt.xlim([-0.05, 1.05])  \n",
    "plt.ylim([-0.05, 1.05])  \n",
    "plt.xlabel('False Positive Rate')  \n",
    "plt.ylabel('True Positive Rate')  \n",
    "plt.title('Receiver operating characteristic example')  \n",
    "plt.legend(loc=\"lower right\")  \n",
    "plt.show()  \n",
    "sns.plt.show"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
